1、国家二级 C语言机试(操作题)模拟试卷 220及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:在任意给定的 9个正整数中找出按升序排列时处于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在主函数中输出处理后的数据序列,并将中间数作为函数值返回。 例如,有 9个正整数: 1 5 7 23 87 5 8 21 45 按升序排列时的中间数为: 8 处理后主函数中输出的数列为: 8 8 8 23 87 8 8 21 45 请在 程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。不得增行或删行
2、,也不得更改程序的结构 ! 试题程序: 1 #inclucte stdio h 2 #define N 9 3 int fun(int x) 4 int i, j, k, t, mid, bN; 5 for(i=0; i N; i+) 6 bi=xi; 7 for(i=0; i =N 2; i+) 8 k=i; 9 for(j=i+l; j N; j+) 10 if(bk bj)k=j; 11 if(k!=i) 12 13 *found* 14 t=bi; bi=【 1】 ; 15 bk=t; 16 17 18 *found* 19 mid=b【 2】 ; 20 for(i=0; i N; i
3、+) 21 *found* 22 if(xi【 3】 mid)xi-mid; 23 return mid; 24 25 main() 26 int i, xN=1, 5, 7, 23, 87, 5, 8, 21, 45; 27 for(i=0; i N; i+) 28 printf( d, xi); 29 printf( nThe mid data is: d n, fun(x); 30 for(i=0; i N; i+) 31 printf( d, xi); 32 printf( n); 33 二、程序修改题 2 下列给定程序中,函数 fun的功能是:给定 n个实数,输出平均值,并统计平均值
4、以上 (含平均值 )的实数个数。例如, n=8时,输入 193 199、 195 673、195 757、 196 051、 196.092、 196.596、 196 579、 196 763、所得平均值为195 838745,在平均值以上的实数个数应为 5。 请改正程序中的错误,使其能得出正确的结果。 注意:部分源程序在文件 MODI1 C中,不要 改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: 1 #include stdlib h 2 #include conio h 3 #include stdio h 4 int fun(float x, int n) 5
5、 *found* 6 int j, c=0; float xa=0 0; 7 for(j=0; jxa) 13 c+; 14 return c; 15 16 main() 17 float x100=193 199, 195 673 、 195.757、 196 051 、 196 092、196 596, 196 579, 196 763; 18 system(cls); 19 printf( d n, fun(x, 8); 20 三、程序设计题 3 编写函数 fun,其功能是:将 S所指字符串中 ASCII码值为奇数的字符删除,剩余字符形成的新串放在 t所指数组中。 例如,若 s所指字符串
6、中的内容为 “ABCDEFGl2345”,其中字符 A的 ASCII码值为奇数,字符 1的 ASCII码值也为奇数,都应当删除,其他依此类推。最后 t所指的数组中的内容应是 “BDF24”。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅 在函数 fun的花括号中填入你编写的若干语句。 试题程序: 1 #include conio h 2 #include stdio h 3 #include string h 4 void fun(char*s, char t) 5 6 7 8 main() 9 10 char s100, t100, Msg =Please
7、enter string s: ; 11 printf(Msg); 12 scanf( s, s); 13 fun(s, t); 14 printf( nThe resuit is: s n, t); 15 国家二级 C语言机试(操作题)模拟试卷 220答案与解析 一、程序填空题 1 【正确答案】 (1)bk (2)4或 N 2 (3)=xa) 【试题解析】 (1)本题着重考查考生对 C语言基本语法以及比较运算符的掌握情况。 (2)本题中的第一个错误:在 C语言中, 应成对出现,所以程序中的语句 ”int j, c=0; float xa=0 0; 应改为 int j, c=0; float
8、xa=0 0; 或相同作用的语句; 本题中的第二个错误:在 C语言中,判断大于或等于的运算符应为 =,所以程序中的语句 if(xj=xa)应改为 if(xj=xa)或相同作用的语句。 三、程序设计题 3 【正确答案】 1 void fun(char *s, char t) 2 3 int i, j=0, n; 4 n=strlen(s); 5 *遍历整个数组 * 6 for(i=0 ; in; i+) 7 *如果元素的 ASCI工码值为偶数 * 8 if(si 2=0) 9 10 *将元素保存到 t中 * 11 tj=si; 12 j+; 13 14 tj= 0; 15 【试题解析】 要删除 ASCII码值为奇数的字符,也就是要保留 ASCII码值为偶数的字符,由于最终是要求出剩余字符形成的新 串,所以本题的算法是对原字符串从头到尾扫描,找出 ASCII码值为偶数的字符并依次存入数组。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1