1、国家二级 C语言机试(操作题)模拟试卷 334及答案与解析 一、程序填空题 1 函数 fun的功能是:逆置数组元素中的值。例如:若 a所指数组中的数据依次为: 1、 2、 3、 4、 5、 6、 7、 8、 9,则逆置后依次为: 9、 8、 7、 6、 5、 4、 3、 2、1。形参 n给出数组中数据的个数。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 1 #include stdio h 2 void fun(int a, int n) 3 int i, t; 4 *
2、found* 5 for(2=0 ; i _1_; i+) 6 7 t=ai; 8 *found* 9 ai=an-1- _2_; 10 *found* 11 _3_=t; 12 13 14 main() 15 int b9=1, 2, 3, 4, 5, 6, 7, 8, 9, i ; 16 printf( nThe original data: n); 17 for(i=0; i 9; i+) 18 printf( 4 d, bi); 19 printf( n); 20 fun(b, 9); 21 printf( nThe data after invert: n); 22 for(2=0;
3、 i 9; i+) 23 printf( 4d, bi); 24 printf( n); 25 二、程序修改题 2 给定程序 MODI1 C中函数 fun的功能是:输出 M行 M列整数方阵,然后求两条对角线上元素之和,返回此和数。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 1 #include stdio h 2 #define M 5 3 *found* 4 int fun(int n, int xx) 5 int i, j, sum=0; 6 printf( nThe d x d matrix: n, M, M);
4、7 for(i=0 ; i M; i+) 8 for(j=0; j M; j+) 9 *found* 10 printf( f, xxij); 11 printf( n); 12 13 for(i=0; i n; i+) 14 sum +=xxii+xxin-i-1; 15 return(sum); 16 17 main() 18 int aaMM=1, 2, 3, 4, 5, 4, 3, 2, 1, 0, 6, 7, 8, 9, 0,9, 8, 7, 6, 5, 3, 4, 5, 6, 7; 19 printf( nThe sum of all elements on 2 diagnals
5、is d , fun(M, aa); 20 三、程序设计题 3 函数 fun的功能是:将 S所指字符串中除了下标为偶数、同时 ASCII值也为偶数的字符外,其余的全都删除 ;串中剩余字符所形成的一个新串放在 t所指的数组中。 例如,若 S所指字符串中的内容为: ABCDEFGl23456,其中字符 A的 ASCII码值为奇数,因此应当删除;其中字符 B的 ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符 2的 ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后 t所指的数组中的内容应是:246 。 注意:部分源程序存在文件 PROG1 C中。
6、 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 1 #include stdio h 2 #include string h 3 void fun(char *s, char t) 4 5 6 main() 7 8 char s100, t100; 9 void NONO(); 10 printf(“ nPlease enter stringS: ); scanf( s, s); 11 fun(s, t); 12 printf( nThe result is: s n, t); 13 NONO(); 14 void NONO() 15 *本函
7、数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * 16 char s100, t100; 17 FILE *rf, *wf; 18 int i; 19 rf=fopen(in dat, r); 20 wf=fopen(out dat, w); 21 for(i=0; i 10; i+) 22 fscanf(rf, s, s); 23 fun(s, t); 24 fprintf(wf, s n, t); 25 26 fclose(rf); 27 fclose(wf); 国家二级 C语言机试(操作题)模拟试卷 334答案与解析 一、程序填空题 1 【正确答案】 (1)n 2 (2)i
8、(3)an-i-1 【试题解析】 函数 fun的功能是将数组中的元素倒置。 第一空:由审题分析可知,总共交换 n 2次,故 循环的终止条件为 i等于 n2,故第一空处应为 “n 2”。 第二空: a0和 an-1交换, a1和 an-2交换 ,因此 a嘲和 an-i-1交换,故第二空处应为 “i”。 第三空: “t=ai; ai=an-1-i; ”所以第三空处是把 t值赋值 an-1-i,故第三空处应为 “an-1-i”。 二、程序修改题 2 【正确答案】 (1)int fun(int n, int xxM) (2)printf( 4d, xxij); 【试题解析】 函数 的功能是求两条对角线
9、上各元素之和。 (1)第一个标识下 fun函数的定义中对于二二维数组的定义在原题中并没有给出空间,所以将 “int fun(int n,int xx)”改为 “int fun(int n,int xxM)”。 (2)fun函数中 n是 int型, C语言输出语句中整型应该是 d,所以第二个标识下 “printf(f, xXij);”应该改为 “printf( 4d“, xxii); ”。 三、程序设计题 3 【正确答案】 1 int i, j=0; 2 for(i=0; i strlen(s); i+=2) 3 if(si 2=0)tj+=si; 4 tj= 0; 【试题解析】 (1)判断一个字符串中的某一字符下标 i是否为偶数,可用 “i2=0”来判断;也可以从下标 0开始,每次增 2。判断字符中的 ASCII码值是否为偶数,则可用 “si 2=0”来判定。 (2)对串 s中下标为偶数的字符进行考查,满足ASCII码值是偶数条件的字符就顺序放在新串 s中,否则就不存放。 (3)所有字符处理完后,记得在新串 s的末尾加 上结束符 “ 0”。