1、二级 C 语言-254 及答案解析(总分: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。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1.C 中。 不得增行或删行,也
2、不得更改程序的结构! 给定源程序如下。 #include stdlib.h #include stdio.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;j+) if(xi*avj= 2; /*found*/ return 3; main() int i; double xN=46,30,32,40,6,17,45,15,48,26; double av,m; for(i=0;iN;i
3、+)printf(“%4.0f“,xi); printf(“/n“); m=fun(x, printf(“/nThe average is:%f/n“,av); printf(“m=%5.0f“,m); printf(“/n“); (分数:30.00)二、程序改错题(总题数:1,分数:30.00)2.给定程序 MODI1.C 中函数 fun 的功能是:根据整型形参 n,计算如下公式的值。 (分数:30.00)三、程序设计题(总题数:1,分数:40.00)3.程序定义了 NN 的二维数组,并在主函数中自动赋值。请编写函数 fun,函数的功能是:使数组右上三角元素中的值乘以 m。 例如:若 m 的
4、值为 2,a 数组中的值为 则返回主程序后 a 数组中的值应为 (分数:40.00)_二级 C 语言-254 答案解析(总分: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、结果。 注意:源程序存放在考生文件夹下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构! 给定源程序如下。 #include stdlib.h #include stdio.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;j+) if(xi*avj= 2; /*found*/ return 3; main() int i; double xN=46,30,32,40,6
6、,17,45,15,48,26; double av,m; for(i=0;iN;i+)printf(“%4.0f“,xi); printf(“/n“); m=fun(x, printf(“/nThe average is:%f/n“,av); printf(“m=%5.0f“,m); printf(“/n“); (分数:30.00)解析:*av i xj 解析 填空 1:从原程序中可以看出*av 代表的是平均值,而 s/N 表示的就是平均值,因此本空应该填*av。 填空 2:if 语句来判断找最接近平均值的数,因而此空应该填 i。 填空 3:题目要求将小于平均值且最接近平均值的数作为函数返回
7、,而 j 表达的是最接近平均值的数在数组中的下标,因而本空应该填写 xj。二、程序改错题(总题数:1,分数:30.00)2.给定程序 MODI1.C 中函数 fun 的功能是:根据整型形参 n,计算如下公式的值。 (分数:30.00)解析:float fun(int n) for(i=2;i=n;i+) 解析 根据函数的返回值可知,函数应定义为 float 型。 该题中函数 fun 的作用是计算数列前 n 项的和,而数列的组成方式是:第 n 项的分母是 1 加第 n-1 项的值,分子为 1,如果循环累加按 for(i=2;in;i+)执行,当输入 n=2 时循环不会执行,程序将得不到想要的结果
8、,因此循环变量的取值范围应包括 2。三、程序设计题(总题数:1,分数:40.00)3.程序定义了 NN 的二维数组,并在主函数中自动赋值。请编写函数 fun,函数的功能是:使数组右上三角元素中的值乘以 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 个循环用于控制列下标。