1、国家二级 C语言机试(操作题)模拟试卷 415及答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.给定程序中,函数 fun的功能是:计算 x所指数组中 N个数的平均值(规定所有数均为正数),平均值通过形参返回给主函数,将小于平均值且最接近平均值的数作为函数值返回,并在主函数中输出。 例如,有 10个正数:46、30、32、40、6、17、45、15、 48、26,平均值为 30 500000。 主函数中输出m=30。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1C 中。 不得增行或删行
2、,也不得更改程序的结构! 试题程序: #include stdlibh #include stdioh #de fine N 10 double fun (double x,double * av) int i, j ; double d, s; s =0; for(i=0; i N; i+) s = s +xi, /*found*/ 【1】 = s/N; d =32767; if(xi *av & *av 一 xi =d) /*found*/ d= *av 一 xi; j= 【2】 ; /*found*/ return 【3】 ; main () int i; double xN,av,m;
3、 printf “/n“) ; m = fun (xf &av) ; printf (“/nThe average is: f/nl, av) ; printf (“m = 5 lf “,m) ; printf ( “/n“) ; (分数:2.00)_二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中,函数 fun的功能是:根据整型形参 n,计算如下公式的值。 (分数:2.00)_三、程序设计题(总题数:1,分数:2.00)3.下列程序定义了 NN的二维数组,并在主函数中自动赋值。请编写函数 fun(int a N,int m),该函数的功能是使数组右上半三角元素中的值乘以 m。
4、例如,若 m的值为 2,a 数组中的值为: 则返回主程序后 a数组中的值应为: (分数:2.00)_国家二级 C语言机试(操作题)模拟试卷 415答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.给定程序中,函数 fun的功能是:计算 x所指数组中 N个数的平均值(规定所有数均为正数),平均值通过形参返回给主函数,将小于平均值且最接近平均值的数作为函数值返回,并在主函数中输出。 例如,有 10个正数:46、30、32、40、6、17、45、15、 48、26,平均值为 30 500000。 主函数中输出m=30。 请在程序的下画线处填入正确的内容并
5、把下画线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1C 中。 不得增行或删行,也不得更改程序的结构! 试题程序: #include stdlibh #include stdioh #de fine N 10 double fun (double x,double * av) int i, j ; double d, s; s =0; for(i=0; i N; i+) s = s +xi, /*found*/ 【1】 = s/N; d =32767; if(xi *av & *av 一 xi =d) /*found*/ d= *av 一 xi; j= 【2】 ; /*fo
6、und*/ return 【3】 ; main () int i; double xN,av,m; printf “/n“) ; m = fun (xf &av) ; printf (“/nThe average is: f/nl, av) ; printf (“m = 5 lf “,m) ; printf ( “/n“) ; (分数:2.00)_正确答案:(正确答案:(1)*av (2)i (3)xj)解析:解析:填空 1:从原程序中可以看出*av 代表的是平均值,而 s/N表示的就是平均值,因此本空应该填*av。 填空 2:if语句来判断找最接近平均值的数,因而此空应该填 i。 填空 3:
7、题目要求将小于平均值且最接近平均值的数作为函数返回,而 j表达的是最接近平均值的数在数组中的下标,因而本空应该填写 xj。二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中,函数 fun的功能是:根据整型形参 n,计算如下公式的值。 (分数:2.00)_正确答案:(正确答案:(1)float fun( int n) (2)for(i =2;i =n;i+)解析:解析:(1)根据函数的返回值可知,函数应定义为 float型。 (2)该题中函数 fun的作用是计算数列前 n项的和,而数列的组成方式是:第 n项的分母是 1加第 n一 1项的值,分子为 1,如果循环累加按for(i=2;i
8、 n;i+)执行,当输入 n=2时循环不会执行,程序将得不到想要的结果,因此循环变量的取值范围应包括 2,循环的条件为 i =n。三、程序设计题(总题数:1,分数:2.00)3.下列程序定义了 NN的二维数组,并在主函数中自动赋值。请编写函数 fun(int a N,int m),该函数的功能是使数组右上半三角元素中的值乘以 m。 例如,若 m的值为 2,a 数组中的值为: 则返回主程序后 a数组中的值应为: (分数:2.00)_正确答案:(正确答案:void fun (int a N, int m) int i,j; for(j=0;j N;j+) for(i=0;i =j;i+) aij=aij*m; /*右上半三角元素中的值乘以 m*/ )解析:解析:本程序实现将矩阵中右上半三角元素中的值乘以 m,使用循环语句遍历数组元素,第 1个循环用于控制行坐标,第 2个循环用于控制列下标。