1、国家二级 C语言机试(操作题)模拟试卷 612及答案与解析 一、程序填空题 1 使用 VC+2010打开考生文件夹下 blank1中的解决方案。此解决方案的项目中包含一个源程序文件 blank1 c。在此程序中,函数 fun的功能是:将形参 n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新数,作为函数值返回。 例如,输入一个整数 27638496,函数返回值为 64862。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更 改程序的结构 ! 试题程序: #include stdio h unsign
2、ed long fun(unsigned long n) unsigned long x=0; int t; while(n) t=n 10; *found* if(t 2=【 1】 ) *found* x=【 2】 +t; *found* n=【 3】 ; return x; main() unsigned long n=-1; while(n 99999999|n 0) printf(“Please input: (0 n 100000000): “); scanf(“ ld“, &n); printf(“ nThe result; is: ld n“, fun(n); 二、程序修改题 2
3、 使用 VC+2010打开考生文件夹下 modi1中的解决方案。此解决方案的项目中包含一个源程序文件 modi1 c。在此程序中,函数 fun的功能是:计算并输出下列级数的前 N项和 SN,直到 SN+1。的值大于 q为止, q的值通过形参传入。例如,若 q的值为 50 0,则函数值应为 49 394948。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 !试题程序: #include conio h #includestdio h double fun(double q)int n; double s, t; n=2; s=2 0
4、; while(s=q)t=s; *found* s=s+(n+1) n; n+; printf(“n= d n“,n); *found* return s; main()printf(“ f n“, fun(50); 三、程序设计题 3 使用 VC+2010打开考生文件夹下 prog1中的解决方案。此解决方案的项目中包含一个源程序文件 prog1 c。在此程序中,编写函数 fun,其功能是:根据以下公式求竹的值 (要求精度 0 0005,即某项小于 0 0005时停止迭代 )。程序运行后,若输入精度0 0005,则程序应输出为 3 140578。注意:部分源程序给出如下。请勿改动主函数 ma
5、in和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序: #include stdio h #include conio h #include math hdouble fun(double eps)void main()double x; printf(“Inputeps: “); Scanf(“ 1f“,&x); printf(“ neps= lf, PI= lf n“, x, fun(X); 国家二级 C语言机试(操作题)模拟试卷 612答案与解析 一、程序填空题 1 【正确答案】 (1)0 (2)10*x (3)n 10 【试题解析】 填空 1:定义变量
6、t用来存放某数的各个位数值,此处判断 t是否为偶数,即对 2求余结果是否为 0。 填空 2:将 t作为 x的个位数,原来 x的各个位上升 1位,即 x=10*x+t。 填空 3:每循环一次,通过除法运算,去掉数值最后一位。 二、程序修改题 2 【正确答案】 (1)s=s+(double)(n+1) n; (2)return t: 【试题解析】 (1)在 C语言中,整数除以整数得出的结果也是整数,因此此处要转换数据类型。 (2)观察 while循环,如果返回变量是 s,那么返回的是大于 q的值,而题中所要返回的是小于 q的值,所以应该返回变量 t。 三、程序设计题 3 【正确答案】 double fun(double eps) double s=0 0, s1=1 0; int n=1; while(s1 =eps) *当某项大于精度要求时,继续求下一项 * s=s+s1; *求和 * s1=s1*n (2*n+1); *求多项式的每一项 * n+; return2*s; 【试题解析】 首先应该定义 double类型变量,并且赋初值,用来存放多项式的某一项和最后的总和。从第二项开始以后的每一项都是其前面一项乘以 n(2*n+1),程序中用 s1来表示每一项, s表示求和后的结果。需注意 s1和 s的初值都为 1 0,因为循环变量从第二项开始累加。