1、国家二级( C语言)机试模拟试卷 188及答案与解析 一、程序填空题( 30分) 1 给定程序中,函数 fun的功能是:将形参 n中,各位上为偶数的数取出,并按原来从高位到低位的顺序组成一个新的数,并作为函数值返回。 例如,从主函数输入一个整数: 27638496,函数返回值为: 26846。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! #include unsigned long fun(unsigned long n) unsigned long x=0, s, i
2、; int t; s=n; *found* i= 【 1】; *found* while(【 2】 ) t=s 10; if(t 2=0) *found* x=x+t*i; i=【 3】; s=s 10; return x; main() unsigned long n=一 1; while(n99999999 | n0.001) 【试题解析】 ( 1) fun函数要求返回方程的一个根,由 return语句来实现,而函数 fun是定义为 double型的,但第一个标识下面的 r却被定义为 int类型。所以“int r;”改为 “double r;”。 ( 2)检查 while循环的控制表达式
3、“(fabs(n-m)0.001)”。 三、程序设计题( 40分) 3 【正确答案】 double fun(double eps) double s=1 0, s1=1 0; int n=1; while(s1=eps)当某项大于精度要求时,继续求下一项 s1=s1*n (2*n+1); 求多项式的每一项 s=s+s1; 累加求和 n+; return 2*s; 【试题解析】 此题考查的是用迭代法求多项式的值。通过观察题目中给出的数学公式可知,后面一项是前面一项乘以 n (2*n+1),发现这个规律后,问题迎 刃而解。通过定义 double类型变量,并且赋初值,用来存放多项式的总和。此题中需要注意的是,表示每一项的 s1和表示多项式之和的 s,两者的初值都是 1 0。