1、国家二级 C语言机试(操作题)模拟试卷 640及答案与解析 一、程序填空题 1 使用 VC+2010打开考生文件夹下 blank1中的解决方案。此解决方案的项目中包含一个源程序文件 blank1 c。在此程序中,函数 fun的功能是:计算下式前 n项的和,并作为函数值返回。 例如,当形参 n的值为 10时,函数返回 -0 204491。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:源程序给出如下。不得增行或删行,也不得更改程序的结构 !试题程序: #include stdio h double fun(int n)int i, k; double s, t; s=
2、0; *found* k=【 1】; for(i=1; i =n;i+) *found* t=【 2】; s=s+k, *(2*i-1)*(2*i+1) (t*t);*found* k=k*【 3】; return s; main()int n=-1; while(n0)printf(“Please input(n 0): “); scanf(“ d“, &n); )printf(“ nThe result is: fn“, fun(n); 二、程序修改题 2 使用 VC+2010打开考生文件夹下 modi1中的解决方案。此解决方案的项目中包含一个源程序文件 modi1 c。在此程序中,函数
3、fun的功能是:求 s的值。例如,当 k为 10时,函数的值应为1 533852。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件 MODI1 C中,不要改动 main函数,不得增行或删行,也不得更改程序的结构 !试题程序: #include stdlib h #include conio h #include stdio h#include math h *found* fun(int k)int n; float s, W,p, q; n=1; s=1 0; while(n =k)w=2 0*n; p=w-1 0; q=w+1 0; s=s*w*wp q; n+; *fou
4、nd* Eeturn svoid main()system(“CLS“);printf(“ f n“, fun(10); 三、程序设 计题 3 使用 VC+2010打开考生文件夹下 prog1中的解决方案。此解决方案的项目中包含一个源程序文件 prog1 c。在此程序中,请编写函数 fun,其功能是:找出 2M整型二维数组中最大元素的值,并将此值返回调用函数。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #define M4 #include stdio h int fun(int aM) void
5、main() int arr2M=5, 8, 3, 45, 76, -4, 12, 82; printf(“max= d n“, fun(arr); 国家二级 C语言机试(操作题)模拟试卷 640答案与解析 一、程序填空题 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:由于通项前边的正负号每次都要发
6、生变化,因此 k=k*(-1)。 二、程序修改题 2 【正确答案】 (1)float fun(int k) (2)return s: 【试题解析】 (1)此处为函数定义错误,根据返回值的类型可知函数类型标识符应为 float。 (2)语法错误。 三、程序设计题 3 【正确答案】 int fun(int aM) int i, j, max=a00; *对二维数组进行遍历 * for(i=0; i 2; i+) for(j=0; j M; j+) if(max aij) *将最大值保存在 max中 * max=aij; return max; 【试题解析】 此类求最大值或最小值的问题,可以采用逐个比较的方式,对数组中所有元素遍历一遍,从中找出数组最大值或最小值。首先定义变量 max用来存放数组的第一个元素的值,然后利用 for循环逐个找出数组中的元素,并与 max比较,如果元素值大于 max,则将该值赋予 max,循环结束后 max的值即为数组最大值,最后将该值返回。 该类题目考查较多,需要掌握逐个比较的方法 。对于 m*n二维数组,如果采用逐个查找方法,代码实现如下: for(i=0; i m; i+) for(j=0; j n; j+)