1、国家二级 C语言机试(操作题)模拟试卷 291及答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.给定程序中,函数 fun的作用是:统计整型变量 m中各数字出现的次数,并存放到数组 a中,其中:a0存放 0出现的次数,a1存放 1出现的次数,a9存放 9出现的次数。 例如,若 m为14579233,则输出结果应为:0,1,1,2,1,1,0,1,0,1, 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1C 中。不得增行或删行,也不得更改程序的结构! 试题程序: #inclucte
2、stdioh void fun(int m,int a10) int i; for(i=0;i10;i+) *found* 【1】 =0; while(m0) *found* i= 【2】 ; ai+; *found* m= 【3】 ; main() int m,a10,i ; printf(“请输入一个整数:“); scanf(“d“,m); fun(m,a); for(i=0;i10;i+) printf(“d,“,ai); printf(“n“); (分数:2.00)_二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中,函数 fun的功能是:给定 n个实数,输出平均值,并统计
3、平均值以上(含平均值)的实数个数。例如,n=8 时,输入193199、195673、195757、196051、196092、196596、196579、196763、所得平均值为195838745,在平均值以上的实数个数应为 5。请改正程序中的错误,使其能得出正确的结果。注意:部分源程序在文件 MODI1C 中,不要改动 main函数,不得增行或删行,也不得更改程序的结构!试题程序:#includestdlibh#includeconioh#includestdioh int fun(float x,int n)*found* int j,c=0;float xa=00; for(j=0;j
4、n;j+) xa+=xjn; printf(“ave=fn“,xa); for(j=0;jn;j+)*found* if(xj =xa) c+; return c;main()float x100=193199,195673,195757,196051,196092,196596,196579,196763); system(“cls“); printf(“dn“,fun(x,8);(分数:2.00)_三、程序设计题(总题数:1,分数:2.00)3.函数 fun的功能是:将 a、b 中的两个正整数合并形成一个新的整数放在 c中。合并的方式是:将 a中的十位和个位数依次放在变量 e的十位和千位上
5、,b 中的十位和个位数依次放在变量 c的个位和百位上。例如,当 a=45,b=12。调用该函数后,c=5241。注意:部分源程序在文件 PROG1C 中。请勿改动 main函数和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序:#includestdiohvoid fun(int a,int b,long*c)main()int a,b;long c;void NONO(); printf(“Input a,b:“); scanf(“dd“,&a,&b); fun(a,b,c); printf(“The result is:1dn“,c); NONO();void
6、 NONO()*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。* FILE*rf,*wf ; int i,a,b;long c; rf=fopen(“indat“,“r“); wf=fopen(“outdat“,“w“); for(i=0;i10;i+) fscanf(rf,“d,d“,a,b); fun(a,b,c); fprintf(wf,“a=d,b=d,c=ldn“,a,b,c); fclose(rf); fclose(wf);(分数:2.00)_国家二级 C语言机试(操作题)模拟试卷 291答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数
7、:2.00)1.给定程序中,函数 fun的作用是:统计整型变量 m中各数字出现的次数,并存放到数组 a中,其中:a0存放 0出现的次数,a1存放 1出现的次数,a9存放 9出现的次数。 例如,若 m为14579233,则输出结果应为:0,1,1,2,1,1,0,1,0,1, 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1C 中。不得增行或删行,也不得更改程序的结构! 试题程序: #incluctestdioh void fun(int m,int a10) int i; for(i=0;i10;i+) *found* 【1
8、】 =0; while(m0) *found* i= 【2】 ; ai+; *found* m= 【3】 ; main() int m,a10,i ; printf(“请输入一个整数:“); scanf(“d“,m); fun(m,a); for(i=0;i10;i+) printf(“d,“,ai); printf(“n“); (分数:2.00)_正确答案:(正确答案:(1)ai (2)m10 (3)m10)解析:解析:数组 a各元素初始化为 0,用求余和整除相结合的方法得到数字的每一位数字,并用它做为数组 a的下标,相应元素加 1。 填空 1:数组 a的 10个元素赋值为 0。 填空 2:
9、m10 可得到数 m的最后一位数字。 填空 3:m10 可使数字截短,即去掉最后一位。二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中,函数 fun的功能是:给定 n个实数,输出平均值,并统计平均值以上(含平均值)的实数个数。例如,n=8 时,输入193199、195673、195757、196051、196092、196596、196579、196763、所得平均值为195838745,在平均值以上的实数个数应为 5。请改正程序中的错误,使其能得出正确的结果。注意:部分源程序在文件 MODI1C 中,不要改动 main函数,不得增行或删行,也不得更改程序的结构!试题程序:#in
10、cludestdlibh#includeconioh#includestdioh int fun(float x,int n)*found* int j,c=0;float xa=00; for(j=0;jn;j+) xa+=xjn; printf(“ave=fn“,xa); for(j=0;jn;j+)*found* if(xj =xa) c+; return c;main()float x100=193199,195673,195757,196051,196092,196596,196579,196763); system(“cls“); printf(“dn“,fun(x,8);(分数:
11、2.00)_正确答案:(正确答案:(1)int j,c=0;float xa=00; (2)if(xj=xa)解析:解析:(1)本题着重考查考生对 C语言基本语法以及比较运算符的掌握情况。 (2)本题中的第一个错误:在 C语言中,应成对出现,所以程序中的语句”int j,c=0;float xa=00;“应改为“int j,c=0;float xa=00;“或相同作用的语句; 本题中的第二个错误:在 C语言中,判断大于或等于的运算符应为=,所以程序中的语句“if(xj=xa)“应改为“if(xj=xa)“或相同作用的语句。三、程序设计题(总题数:1,分数:2.00)3.函数 fun的功能是:将
12、 a、b 中的两个正整数合并形成一个新的整数放在 c中。合并的方式是:将 a中的十位和个位数依次放在变量 e的十位和千位上,b 中的十位和个位数依次放在变量 c的个位和百位上。例如,当 a=45,b=12。调用该函数后,c=5241。注意:部分源程序在文件 PROG1C 中。请勿改动 main函数和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序:#includestdiohvoid fun(int a,int b,long*c)main()int a,b;long c;void NONO(); printf(“Input a,b:“); scanf(“dd“,&
13、a,&b); fun(a,b,c); printf(“The result is:1dn“,c); NONO();void NONO()*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。* FILE*rf,*wf ; int i,a,b;long c; rf=fopen(“indat“,“r“); wf=fopen(“outdat“,“w“); for(i=0;i10;i+) fscanf(rf,“d,d“,a,b); fun(a,b,c); fprintf(wf,“a=d,b=d,c=ldn“,a,b,c); fclose(rf); fclose(wf);(分数:2.00)_正确答案:(正确答案:void fun(int a,int b,long*c) *c=(a10)*1000+(b10)*100+(a10)*10+(b10); )解析:解析:本题是给出两个两位数的正整数分别取出各位上的数字,再按条件组成一个新数。取 a十位数字的方法 a10,取 a个位数字的方法 a10。同理可取出整数 b的个位数和十位数。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1