1、二级 C语言机试-146 及答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:33.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#includeconiohdouble fun
2、(double x10)int i;long t;double avg=0.0;double sum=0.0;for(i=0;il0;i+)【1】 ;avg=sum/10;avg= 【2】 ;t= 【3】 ;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;il0;i+)printf(“%6.lf“,xi);printf(“/n/
3、n“);avg=fun(x);printf(“average=%f/n/n“,avg);(分数:33.00)填空项 1:_二、改错题(总题数:1,分数:33.00)2.下列给定程序中,函数 fun()的功能是:先从键盘上输入一个 3行 3列的矩阵的各个元素的值,然后输出主对角线元素之积。请改正函数 fun()中的错误,使它能得出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。试题程序: #includestdiohint fun()int a33,mu1;int i,j;mu1=l;for (i0;i3;i+)/*found*/for(i=0;i3;j+)sca
4、nf(“%d”,j3;j+) 正确:for(j=0;j3;j+)(2) 错误:mu1=mu1*aij; 正确:mu1=mul*aii;)解析:解析 错误 1:循环结构中,要给变量 j赋初值 0。错误 2:主对角元素的行号和列号相等,所以参加乘法的是 aii,而不是 aij。三、编程题(总题数:1,分数:34.00)3.学生的记录由学号和成绩组成,N 名学生的数据己在主函数中放入结构体数组 s中,请编写函数 fun(),它的功能是:把分数最低的学生数据放在 h所指的数组中。注意:分数低的学生可能不只一个,函数返回分数最低学生的人数。注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的
5、任何内容,仅在函数 fun的花括号中填入所编写的若干语句。试题程序: #include stdioh#define N 16typedef structchar 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,“GA006“,85,“GA015“,83,“GA013“,94,“GA012“,78,“GA014“,97,“GA011“,60,“GA017“,65,“G
6、A018“,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/n“,n);for(i=0;in;i+);fprintf(out,“%4d/n“,hi.s);fclose(out);(分数:34.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中。