1、二级 C 语言机试 53 及答案解析(总分:100.00,做题时间:90 分钟)一、B填空题/B(总题数:1,分数:30.00)1.请补充函数 fun(),该函数的功能是求一维数组 xN的平均值,并对所得结果进行四舍五入(保留两位小数)。 例如:当 x10=15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0,结果为:avg=15.030000。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仪在函数 fun 的横线上填入所编写的若干表达式或语句。 试题程序: #includestdioh #includeconio
2、h double fun(double x10) int i; long t; double avg=0.0; double sum=0.0; for(i=0;il0;i+) U【1】 /U; avg=sum/10; avg=U 【2】 /U; t=U 【3】 /U; avg=(double)t/100; return avg; main() double avg,x10=15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0; int i; clrscr(); printf(“/nThe original data is:/n“); for(i=0
3、;il0;i+) printf(“%6.lf“,xi); printf(“/n/n“); avg=fun(x); printf(“average=%f/n/n“,avg); (分数:30.00)填空项 1:_二、B改错题/B(总题数:1,分数:30.00)2.下列给定程序中,函数 fun()的功能是:先从键盘上输入一个 3 行 3 列的矩阵的各个元素的值,然后输出主对角线元素之积。 请改正函数 fun()中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdioh int fun() int a33,mu1;
4、 int i,j; mu1=l; for (i0;i3;i+) /*found*/ for(i=0;i3;j+) scanf(“%d”,j3;j+) 正确:for(j=0;j3;j+))解析:(2) 错误:mu1=mu1*aij; 正确:mu1=mul*aii; 解析 错误 1:循环结构中,要给变量j 赋初值 0。错误 2:主对角元素的行号和列号相等,所以参加乘法的是 aii,而不是 aij。三、B编程题/B(总题数:1,分数:40.00)3.学生的记录由学号和成绩组成,N 名学生的数据己在主函数中放入结构体数组 s 中,请编写函数 fun(),它的功能是:把分数最低的学生数据放在 h 所指的
5、数组中。注意:分数低的学生可能不只一个,函数返回分数最低学生的人数。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。 试题程序: #include stdioh #define N 16 typedef struct char num10; int s; STREC; int fun (STREC *a,STREC *b) main () STREC sN=“GA005“,82,“GA003“,75, “GA002“,85,“GA004“,78,“GA001“,95, “GA007“,62,“GA008“,60,
6、“GA006“,85, “GA015“,83,“GA013“,94,“GA012“,78, “GA014“,97,“GA011“,60,“GA017“,65, “GA018“,60,“GA016“,74;STREC hN; int i,n; FILE *out; n=fun(s,h); printf(“The %d lowest score:/n“,n); for (i=0;in;i+) printf(“%s %4d/n“,himum,his); /*输出最低分学生的学号和成绩*/ printf(“/n“); out=fopen(“out19dat“,“w“); fprintf(out,“%d
7、/n“,n); for(i=0;in;i+);fprintf(out,“%4d/n“,hi.s); fclose(out); (分数:40.00)_正确答案:()解析:int fun (STREC *a,STREC *b) int i,j=0,min=a0s; for(i=0;iN;i+) if(minais) min=ai.s; /*找出最小值*/ for (i=0;iN;i+): if(min=ais) bj+=ai;/*找出成绩与 min 相等的学生的记录,存入结构体 b 中*/ return j; /*返回最低成绩的学生人数*/ 解析 该程序使用循环嵌套,第 1 个 for 语句的作用是找出最小值。第 2 个循环的作用是找出与 min 相等的成绩,也即最低成绩的学生记录,并存入 b 中。