1、全国计算机二级 C语言上机试题 41+2015年及答案解析(总分:30.00,做题时间:90 分钟)1.给定程序中,函数 fun的功能是:计算 x所指数组中 N个数的平均值(规定所有数均为正数),平均值通过形参返回主函数,将小于平均值且最接近平均值的数作为函数值返回,在主函数中输出。 例如,有10个正数:46 30 32 40 6 17 45 15 48 26,平均值为: 30.500000 主函数中输出:m=30.0 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1.C中。不得增行或删行,也不得更改程序的结构! 给定源程序
2、: #include #define N 10 double fun(double x,double *av) int i,j; double d,s; s=0; for(i=0; i /*found*/ _1_=s/N; d=32767; for(i=0; i if(xi=d) /*found*/ d=*av-xi; j=_2_; /*found*/ return _3_; main() int i; double xN,av,m; for(i=0; i4.0f “,xi); printf(“/n“); m=fun(x, printf(“/nThe average is: %f/n“,av)
3、; printf(“m=%5.1f “,m); printf(“/n“); (分数:10.00)_2.给定程序 MODI1.C中函数 fun的功能是:根据整型形参 n,计算如下公式的值。 例如,若 n=10,则应输出: 0.617977。 请改正程序中的语法错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程 序的结构! 给定源程序: #include /*found*/ int fun ( int n ) float A=1; int i; /*found*/ for (i=2; i A = 1.0/(1+A); return A ; main( ) i
4、nt n ; printf(“/nPlease enter n: “) ; scanf(“%d“, printf(“A%d=%f/n“, n, fun(n) ) ; (分数:10.00)_3.程序定义了 NN的二维数组,并在主函数中自动赋值。请编写函数 fun,函数的功能是:使数组右上三角元素中的值乘以 m 。 例如:若 m的值为 2,a 数组中的值为 | 1 9 7 | | 2 18 14| a = | 2 3 8 | 则返回主程序后 a数组中的值应为 | 2 6 16| | 4 5 6 | | 4 5 12| 注意: 部分源程序存在文件PROG1.C文件中。请勿改动主函数 main和其它函
5、数中的任何内容, 仅在函数 fun的花括号中填入你编写的若干语句。 给定源程序: (分数:10.00)_全国计算机二级 C语言上机试题 41+2015年答案解析(总分:30.00,做题时间:90 分钟)1.给定程序中,函数 fun的功能是:计算 x所指数组中 N个数的平均值(规定所有数均为正数),平均值通过形参返回主函数,将小于平均值且最接近平均值的数作为函数值返回,在主函数中输出。 例如,有10个正数:46 30 32 40 6 17 45 15 48 26,平均值为: 30.500000 主函数中输出:m=30.0 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注
6、意:源程序存放在考生文件夹下的 BLANK1.C中。不得增行或删行,也不得更改程序的结构! 给定源程序: #include #define N 10 double fun(double x,double *av) int i,j; double d,s; s=0; for(i=0; i /*found*/ _1_=s/N; d=32767; for(i=0; i if(xi=d) /*found*/ d=*av-xi; j=_2_; /*found*/ return _3_; main() int i; double xN,av,m; for(i=0; i4.0f “,xi); printf(
7、“/n“); m=fun(x, printf(“/nThe average is: %f/n“,av); printf(“m=%5.1f “,m); printf(“/n“); (分数:10.00)_正确答案:(第一处:计算好的平均值通过形参 av返回,所以应填:*av。 第二处:计算小于平均值且最接近平均值的位置 j,所以应填:i。 第三处:返回该数,所以应填:xj。)解析:2.给定程序 MODI1.C中函数 fun的功能是:根据整型形参 n,计算如下公式的值。 例如,若 n=10,则应输出: 0.617977。 请改正程序中的语法错误,使它能得出正确的结果。 注意:不要改动 main 函数
8、,不得增行或删行,也不得更改程 序的结构! 给定源程序: #include /*found*/ int fun ( int n ) float A=1; int i; /*found*/ for (i=2; i A = 1.0/(1+A); return A ; main( ) int n ; printf(“/nPlease enter n: “) ; scanf(“%d“, printf(“A%d=%f/n“, n, fun(n) ) ; (分数:10.00)_正确答案:(第一处:函数的返回是浮点型数,所以应改为:float fun(int n)。 第二处:for 的终止条件应是 i=n。
9、)解析:3.程序定义了 NN的二维数组,并在主函数中自动赋值。请编写函数 fun,函数的功能是:使数组右上三角元素中的值乘以 m 。 例如:若 m的值为 2,a 数组中的值为 | 1 9 7 | | 2 18 14| a = | 2 3 8 | 则返回主程序后 a数组中的值应为 | 2 6 16| | 4 5 6 | | 4 5 12| 注意: 部分源程序存在文件PROG1.C文件中。请勿改动主函数 main和其它函数中的任何内容, 仅在函数 fun的花括号中填入你编写的若干语句。 给定源程序: (分数:10.00)_正确答案:(int fun ( int aN, int m ) int i, j; for(i = 0 ; i N ; i+) for(j = i ; j N ; j+) aij *= m ; )解析: