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