1、国家二级 C语言机试(操作题)模拟试卷 256及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:计算下式前 n项的和,并作为函数值返回。例如,当形参 n的值为 10时,函数返回 -0 204491。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: 1 #include stdio h 2 double fun(int n)3 int i, k;double s, t; 4 s=0; 5 * found* 6 k=【 1】 ;7 for(i=1; i n;i+)8 *found
2、* 9 t=【 2】; 10 s=s+k*(2*i-1)*(2*i+1) (t*t);11 *found* 12 k=k*【 3】; 13 14 return s; 15 16 main()17 int n=-1; 18 while(n 0)19 printf(Please input(n0): ); scanf( d, n); 20 printf ( nThe result is: f n, fun(n); 21 二、程序修改题 2 下列给定程序中,函数 fun的功能是:根据以下公式求 值,并作为函数值返回。 例如,当给指定精度的变量 eps输入 0 0005时,应输出 Pi=3 14057
3、8。请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: 1 #include conio h 2 #include stdio h 3 #includemath h 4 double fun(double eps)5 6 double s , t; int n=1; 7 s=0 0; 8 *found* 9 t=0; 10 while(teps)11 12 s+=t; 13 t=t*n(2*n+1); 14 n+; 15 16 *found* 17 return(s); 18 19 void main()20 21 d
4、ouble c; 22 printf( nPlease enter a precision: ); 23 scanf( 1f, x); 24 printf( nPi= if n, fun(x); 25 三、程序设计题 3 请编写一个函数 int fun(int*s, intt, int*k),用来求出数组的最大元素在数组中的下标并存放在 k所指向的存储单元中。 例如,输入如下整数: 876 675 896 101 301 40l 980 43l 451 777 则输出结果为 6, 980。 注意:部分源程序在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 f
5、un的花括号中填入你编写的若干语句。 试题程序: 1 #include conio h 2 #include stdio h 3 #include stdlib h 4 int fun(int*s, int t, int * k) 5 6 7 8 void main() 9 10 FILE*Wf; 11 int a10=876, 675, 896, 101, 301, 401, 980, 431, 451, 777, k; 12 system(CLS); 13 fun(a, 10, k); 14 printf( d, d n, k, ak); 15 * 16 wf=fopen(out dat,
6、 w); 17 fprintf(wf, d, d, k, ak); 18 fclose(wf); 19 * 20 国家二级 C语言机试(操作题)模拟试卷 256答案与解析 一 、程序填空题 1 【正确答案】 (1)1 (2)2*i (3)(-1) 【试题解析】 填空 1:由 fun函数整体结构可以看出 k的作用是赋值,并累加各项前边的正负号,由于第一项是正的,因此赋给 k的值为 1。 填空 2:此空下一行的表达式 k*(2*i-1)*(2*i+1) (t*t)累加的通项, k为正负号,由题目中的公式可知 t=2*i。 填空 3:由于通项前边的正负号每次都要发生变化,因此 k=k*(-1)。 二
7、、程序修改题 2 【正确答案】 (1)t=1 0; (2)return(s*2); 【试题解析】 该题中,首先检查变量数据类型前后是否一致,因为变量 t定义为double型,所以赋值时要赋以实型数值。 return(s)是一个数学错误,应该返回return(s*2);。 三、程序设计题 3 【正确答案】 1 int fun(int*s, int t, int *k) 2 3 int i; 4 *k=0; *k所指的数是数组的下标值 * 5 for(i=0; it; i+) 6 if(s* ksi) *k=i; *找到数组的最大元素,把 该元素的下标赋给 k所指的数* 7 return s*k; *返回数组的最大元素 * 8 【试题解析】 本题中直接使用指针变量 k,使用时要注意对 k进行指针运算。程序一开始让 k指向数组中的第一个元素,即 *k=0。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1