1、国家二级 C语言机试(操作题)模拟试卷 358及答案与解析 一、程序填空题 1 函数 fun的功能是进行数字字符转换。若形参 ch中是数字字符 0 9,则 0转换成 9, 1啭换成 8, 2转换成 7, , 9转换成 0;若是其他字符则保持不变;并将转换后的结果作为函数值返回。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 1 #include stdio h 2 *found* 3 _1_ fun(char ch) 4 5 *found* 6 if(ch =0 _2_)
2、 7 *found* 8 return 9-(ch- _3_ ); 9 return ch; 10 11 main() 12 char c1, c2; 13 printf( nThe result: n); 14 c1=2; c2=fun(c1); 15 printf(c1= c c2= c n, c1, c2); 16 c1=8; c2=fun(c1); 17 printf(c1= c c2= c n, c1, c2); 18 c1=a; c2=fun(c1); 19 printf(c1= c c2= c n, c1, c2); 20 二、程序修改题 2 给定程序 MODI1 C中函数 fu
3、n的功能 是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构 ! 1 #include stdio h 2 #include math h 3 void fun(int a, int *b, int *c) 4 int i, j, d, y; 5 for(i=3; i =a 2; i=i+2) 6 *found* 7 y=1; 8 for(j=2; j =sqrt(double)i); j+) 9 if(i j=0)y=0; 10
4、 if(y=1) 11 *found* 12 d=a-i; 13 for(j=2; j =sqrt(double)d); j+) 14 if(d j=0)y=0; 15 if(y=1) 16 *b=i; *c=d; 17 18 19 20 main() 21 int a, b, c; 22 do 23 printf( nInput a: ); scanf( d, a); 24 while(a 2); 25 fun(a, b, c); 26 printf( n n d= d+ d n, a, b, c); 27 三、程序设计题 3 请编写函数 fun,其功能是:将所有大于 1小于整数 m的非素数
5、存入 xx所指数组中,非素数的个数通过 k传回。 例如,若输入: 17,则应输出: 4 6 8 9 10 12 14 15 16。 注意:部分源程序在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 1 #include stdio h 2 void fun(int m, int *k, int xx) 3 4 5 6 main() 7 8 int m, n, zz100; 9 void NONO(); 10 printf( nPlease enter an integer number between 10 and 1
6、00: ); 11 scanf( d, c2=fun(c1); ”,而 c1和 c2是 char变量,可知 fun函数的返回值类型是 char,故第一空处补充返回值类型应为“char”。 第二空:数字字符是 “0 9p”,因此数字字符必须 “ch =0”且 “ch =9”,故第二空处应为 “ch =9”。 第三空:数字字符转换规则是: “0”转换成 “9”, “1”转换成 “8”, “2”转换成 “7, , 9”转换成 “0”,即返回值为 “9-(ch-0)”,故第三空处应为 “0”。 二、程序修改题 2 【正确答案】 (1)y=1; (2)d=a-i; 【试题解析】 函数的功能是为一个偶数查
7、找两个素数,这两个素数之和等于该偶数。 (1)第一标识下 “Y=1; ”变量 Y没有定义,编译时会提示出错。题中用标志 y区别 i是否是素数, y=1是素数, y=0不是素数。第一个标识下当 i是素数时, y最后的值就是进入循环结构前的初始化值 0,标识该值不是素数,所以 “Y=1; ”应该改为 “y=1; ”。 (2)在语句 “if(v=1)”中,应该是判断 (a-i)是否是素数,即 d应赋值 “a-i”而不是“d=a-i; ”,所以第二个标识下 “d=a-i; ”,改为 “d=a-i; ”。 三、程序设计题 3 【正确答案】 1 int i, j; 2 int t=0; 初始化数组个数 3 for(i=2; i m; i+) 循环判断小于 n的数是否为素数 4 j=2 ; 5 while(j i) 6 (if(i j=0) 如果 i不是素数 7 xxt=i; 8 t+; 9 break; 10 11 j+; 12 *k=t; 【试题解析】 (1)根据求素数的方法判断数 i是否 为素数。 (2)把不是素数的数留下来,其方法是:如果该数是素数则不处理;如果不是素数则放到数组 xx中,并且把数组的下标加 1,为下一个不是素数的数放在数组中做准备。 (3)返回个数,把 xx数组中已经写入的数的个数返回即可,即把数组 xx的最大下标加 1返回即可。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1