1、国家二级 C语言机试(操作题)模拟试卷 491及答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.给定程序中,函数 fun的功能是:计算形参 x所指数组中 N个数的平均值(规定所有数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至 x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。 例如,有 10个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30500000 移动后的输出为:30 6 17 15 26 46 32 40 45 48 请在程序的下划线处填入正确的内
2、容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1C 中。 不得增行或删行,也不得更改程序的结构!#includestdlibh#includestdioh#define N 10 double fun(double *x) int i,j;double av,yN; av=0; *found* for(i=0; iN; i+) av +=【1】; for(i=j=0;iN;i+) if(xiav) *found* yj=xi;xi=一 1; 【2】; i=0; while(iN) if(xi!=一 1)yj+=xi; *found* 【3】; for(i=
3、0;iN;i+)xi=yi; return av; main() int i;double xN; for(i=0;iN;i+)xi=rand()50;printf(“40f“,xi); printf(“n“); printf(“nThe average is:fn“,fun(x); printf(“nThe result:n“,fun(x); for(i=0;iN;i+)printf(“50f“,xi); printf(“n“);(分数:2.00)_二、程序修改题(总题数:1,分数:2.00)2.给定程序 MODI1C 中函数 fun的功能是:统计字符串中各元音字母(即:A、E、I、O、U)
4、的个数。注意:字母不分大、小写。例如:若输入:THIs is a boot,则输出应该是:1、0、2、2、0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构!#includestdiohvoid fun(char *s,int num5) int k,i=5; for(k=0;ki;k+)*found* numi=0; for(;*s;s+) i=一1;*found*switch(s) casea:case A:i=0;break;casee:caseE:i=1;break;casei:caseI:i=2;break;caseo
5、:caseO:i=3;break;caseu:caseU:i=4;break; if(i=0) numi+; main()char s181;int num15,i;printf(“nPlease enter a string:“);gets(s1);fun(s1,nums);for (i=0; i5;i+)printf(“d“,num1i);printf(“n“);(分数:2.00)_三、程序设计题(总题数:1,分数:2.00)3.请编写函数 fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。 例如:二维数组中的值为: 1 3 5 7 9 2 9 9
6、 9 4 6 9 9 9 8 1 3 5 7 0 则函数值为 61。 注意:部分源程序存在文件 PROG1C 文件中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。#includestdioh#define M 4#define N 5int fun(int aMN)main()Int aaMN=1,3,5,7,9,2,9,9,9,4),6,9,9,9,8,1,3,5,7,0; int i,j,y;void NONO();printf(“The original data is:n“); for(i=0;iM;i+) for (j=0; jN
7、;j+)printf(“6d“,aaij); printf(“n“); y=fun(aa); printf(“nThe sum:dn“,y); printf(“n“); NONO();void NONO()*请在此函数内打开文件,输入测试数据,调用 fun函数,输出数据,关闭文件。* int i,j,y,k,aaMN;FILE *rf,*wf; rf=fopen(“indat“,“r“); wf=fopen(“outdat“,“W“); for(k=0;k10;k+) for(i=0;iM;i+) for(j=0; jN; j+)fscanf(rf,“d“, for(i=0; i解析:解析:进入 fun函数,根据前面的分析:求周边元素的和,可以采用两个循环分别把行元素和列元素相加。但要避免把周边元素重复相加。