1、二级 C 语言-370 及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序中,函数 fun 的功能是:计算 x 所指数组中 N 个数的平均值(规定所有数均为正数),平均值通过形参返回给主函数,将小于平均值且最接近平均值的数作为函数值返回,并在主函数中输出。 例如,有 10 个正数:46、30、32、40、6、17、45、15、48、26,平均值为 30.500000。 主函数中输出 m=30。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! 试题程序: #incl
2、udestdlib.h #includestdio.h #define N 10 double fun(double x,double*av) int i,j;double d,s; s=0; for(i=0; iN; i+)s=s+xi; /*found*/ 1=s/N; d=32767; for(i=0;iN;i+) if(xi*av j= 2; /*found*/ return 3; main() int i; double xN,av,m; for(i=0; iN; i+) xi=rand()%50; printf(“%4.0f“,xi);) printf(“/n“); m=fun(x
3、, printf(“/nThe average is:%f/n“,av); printf(“m=%5.1f“,m); printf(“/n“); (分数:30.00)二、程序修改题(总题数:1,分数:30.00)2.下列给定程序中,函数 fun 的功能是:根据整型形参 n,计算如下公式的值。 (分数:30.00)三、程序设计题(总题数:1,分数:40.00)3.下列程序定义了 NN 的二维数组,并在主函数中自动赋值。请编写函数 fun(int aN,int m),该函数的功能是使数组右上半三角元素中的值乘以 m。 例如,若 m 的值为 2,a 数组中的值为: 则返回主程序后 a 数组中的值应为
4、: (分数:40.00)_二级 C 语言-370 答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序中,函数 fun 的功能是:计算 x 所指数组中 N 个数的平均值(规定所有数均为正数),平均值通过形参返回给主函数,将小于平均值且最接近平均值的数作为函数值返回,并在主函数中输出。 例如,有 10 个正数:46、30、32、40、6、17、45、15、48、26,平均值为 30.500000。 主函数中输出 m=30。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构!
5、 试题程序: #includestdlib.h #includestdio.h #define N 10 double fun(double x,double*av) int i,j;double d,s; s=0; for(i=0; iN; i+)s=s+xi; /*found*/ 1=s/N; d=32767; for(i=0;iN;i+) if(xi*av j= 2; /*found*/ return 3; main() int i; double xN,av,m; for(i=0; iN; i+) xi=rand()%50; printf(“%4.0f“,xi);) printf(“/
6、n“); m=fun(x, printf(“/nThe average is:%f/n“,av); printf(“m=%5.1f“,m); printf(“/n“); (分数:30.00)解析:*av (2)i (3)xj 解析 填空 1:从原程序中可以看出*av 代表的是平均值,而 s/N 表示的就是平均值,因此本空应该填*av。 填空 2:if 语句来判断找最接近平均值的数,因而此空应该填 i。 填空 3:题目要求将小于平均值且最接近平均值的数作为函数返回,而 j 表达的是最接近平均值的数在数组中的下标,因而本空应该填写 xj。二、程序修改题(总题数:1,分数:30.00)2.下列给定程
7、序中,函数 fun 的功能是:根据整型形参 n,计算如下公式的值。 (分数:30.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;in;i+)执行,当输入 n=2 时循环不会执行,程序将得不到想要的结果,因此循环变量的取值范围应包括 2,循环的条件为 i=n。三、程序设计题(总题数:1,分数:40.00)3.下列程序定义了 NN 的二维数组,并在主函数中自动赋值。请编写函数 fun(int aN,int m),该函数的功能是使数组右上半三角元素中的值乘以 m。 例如,若 m 的值为 2,a 数组中的值为: 则返回主程序后 a 数组中的值应为: (分数:40.00)_正确答案:()解析:void fun(int aN,int m) int i,j; for(j=0;jN;j+) for(i=0;i=j;i+) aij=aij*m; /*右上半三角元素中的值乘以 m*/ 解析 本程序实现将矩阵中右上半三角元素中的值乘以 m,使用循环语句遍历数组元素,第 1 个循环用于控制行坐标,第 2 个循环用于控制列下标。