C语言上机实训国计算机等级考试NCRE二级C南通100题
编程题
第1题
一、题目要求PROC1.c
编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+...+1/(1+2+3+...+n)例如:若n的值为11时,函数的值为1.833333。
#include
#include
#include
float fun(int n)
{
}
main()
{int n;float s;
printf("\nplease enter N:"); scanf("%d",&n);
s=fun(n);
printf("the result is : %f\n",s);
}
二、算法分析
主要数据结构
for函数计算s的值并通过函数值返回
算法描述
遍历i计算s的值
将s的值通过函数值返回
三、实现代码
float fun(int n)
{ int i;float s=0.0,a=0.0;
for(i=1;i<=n;i++)
{a=a+i;
s=s+1/a;}
return s;
}
四.调试中遇到的主要问题及解决方法
1、问题:调试输入11时结果为1.000000。 经查在定义时将a定义为整型,导致结果出错,解决方法:将其改为float型即可。
第2题
一、题目要求PROC2.c
请编一个函数float fun(double h),函数的功能是对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值为正数)。 例如:若h值为8.32433,则函数返回8.32;若h值为8.32533,则函数返回8.33。
#include
#include
float fun ( float h )
{
}
main( )
{ float a;
printf ("Enter a: "); scanf ( "%f", &a );
printf ( "The original data is : " );
printf ( "%f \n\n", a );
printf ( "The result : %f\n", fun ( a ) );
}
二、算法分析
算法描述
遍历fun函数,计算并返回保留2位小数,并对第三位进行四舍五入的变量h的值
三、实现代码
float fun ( float h )
{ return (int)(h*100+0.5)/100.0;
}
四.调试中遇到的主要问题及解决方法
1、问题:编程时将(h*100+0.5)除以100,导致调试出错
解决方法:将100改为100.0
第3题
一、题目要求PROC5.c
请编写函数fun,它的功能是计算下列级数和,和值由函数值返回。S=1+x+x*x/2!+x*x*x/3!+...+x*x*x...*x/n!例如,当n:10,x=O.3时,函数值为1.349859。
#include
#include
#include
double fun(double x, int n)
{
}
main()
{
printf("%f\n",fun(0.3,10));
}
二、算法分析
1、主要数据结构
for函数计算所求级数的和并通过函数值返回
2、算法描述
遍历fun函数计算分子与分母的值,计算级数的和值
将和值通过函数值返回
三、实现代码
double fun(double x, int n)
{int i,a=1;double b=1,s=1;
for(i=1;i<=n;i++)
{a=a*i;
b=b*x;
s=s+b/a;
}
return s;
}
四.调试中遇到的主要问题及解决方法
1、问题:,因将s和b定义为整型,导致调试结果为1.000000,
解决方法:将s和b改为double型
第4题
一、题目要求PROC7.c
请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12,调用该函数后,c=4152。
#include
#include
void fun(int a, int b, long *c)
{
}
main()
{ int a,b; long c;
printf("input a, b:"); scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("the