1、二级 C 语言-559 及答案解析(总分:69.00,做题时间:90 分钟)一、填空题(总题数:1,分数:-1.00)1.请补充函数 fun(),该函数的功能是:计算 NN 维矩阵元素的方差,结果由函数返回。维数 N 在主函数中输入。例如: (分数:-1.00)二、改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 proc()的功能是:从 m 个学生的成绩中统计出低于平均分的学生人数,人数由函数值返回,平均分存放在形参 aver 所指的存储单元中。例如输入 8 名学生的成绩: 60 70 80 90 65 75 85 95 则低于平均分的学生人数为 4(平均分为 77.5)。实际
2、输入时学生数以回车键作为结束,成绩与成绩之间也与回车键作为分隔。 请修改程序中的错误,使它能得到正确结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #ineludestdlib.h #includestdio.h #includeconio.h #define M 20 int proc (float *s, int n, float * aver) /*found* int ave, t=0; int count=0, k, i; for(k=0; kn; k+) t+=sk; ave=t/n; for(i=0; in; i+) /*found*
3、 if(siave) count+; /*found* aver=ave; return count; void main() float stu30, aver; int m, i; system(“CLS“); printf(“/nPlease enter m: “); scanf(“%d“, m); printf(“/nPlease enter%d mark: /n“, m); for(i=0; im; i+) scanf(“%f“, stu+i); printf(“/nThe number of students: %d/n“, proc(stu, m, aver); printf(“
4、Ave=%f/n“, aver); (分数:30.00)三、编程题(总题数:1,分数:40.00)3.编写函数 fun,其功能是计算: (分数:40.00)_二级 C 语言-559 答案解析(总分:69.00,做题时间:90 分钟)一、填空题(总题数:1,分数:-1.00)1.请补充函数 fun(),该函数的功能是:计算 NN 维矩阵元素的方差,结果由函数返回。维数 N 在主函数中输入。例如: (分数:-1.00)解析:【1】int aN 【2】s/(n*n) 【3】sqrt(f)解析 填空 1;由主函数 main()中对函数 fun()的调用格式,可以知道,函数 fun()的第一个参数是 N
5、N 的二维整型数组。填空 2:平均值等于所有元素的累加和除以个数。填空 3;根据公式,方差 sd 等于对变量 f 开平方,这里注意对数学库函数的调用。二、改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 proc()的功能是:从 m 个学生的成绩中统计出低于平均分的学生人数,人数由函数值返回,平均分存放在形参 aver 所指的存储单元中。例如输入 8 名学生的成绩: 60 70 80 90 65 75 85 95 则低于平均分的学生人数为 4(平均分为 77.5)。实际输入时学生数以回车键作为结束,成绩与成绩之间也与回车键作为分隔。 请修改程序中的错误,使它能得到正确结果。 注意
6、:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #ineludestdlib.h #includestdio.h #includeconio.h #define M 20 int proc (float *s, int n, float * aver) /*found* int ave, t=0; int count=0, k, i; for(k=0; kn; k+) t+=sk; ave=t/n; for(i=0; in; i+) /*found* if(siave) count+; /*found* aver=ave; return count; void
7、 main() float stu30, aver; int m, i; system(“CLS“); printf(“/nPlease enter m: “); scanf(“%d“, m); printf(“/nPlease enter%d mark: /n“, m); for(i=0; im; i+) scanf(“%f“, stu+i); printf(“/nThe number of students: %d/n“, proc(stu, m, aver); printf(“Ave=%f/n“, aver); (分数:30.00)解析:(1)错误:int ave, t=0; 正确:fl
8、oat ave, t=0.0; (2)错误:if(siave) 正确:if(siave) (3)错误:aver=ave; 正确:*aver=ave; 解析 由程序可知变量 ave 和 t 中分别存放的是学生的平均分数和分数的总和,都是 float 型数据。因此 int ave, t=0;应改为 float ave, t=0.0;题目要求统计出低于平均分数的学生人数,因此 if(siave)应改为 if(siave);平均分数是通过指针变量传递回主函数的,因此 aver=ave;改为*aver=ave。三、编程题(总题数:1,分数:40.00)3.编写函数 fun,其功能是计算: (分数:40.00)_正确答案:()解析:double fun(int m) int i; double s=0.0; for(i=1;i=m;i+) s=s+log(i);/*计算 s=ln(1)+ln(2)+ln(3)+ln(m)*/ return sqrt(s);/*对 s 求平方根并返回*/ 解析 题目要求写出程序实现数学表达式的功能,需要用 for 循环计算累加的结果,调用 sqrt 函数实现求平方根。循环变量的范围是 1m,每次循环都进行一次累加求和。需要特别注意的是,log 函数的形式参数为 double 型变量,用于循环的计数变量为整数,所以必须强制转换。最后返回所求出的平方根。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1