1、国家二级( C语言)机试模拟试卷 329及答案与解析 一、程序填空题( 30分) 1 给定程序中,函数 fun的功能是:求 ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参 n所指变量中。 ss所指字符串数组中共有 M个字符串,且串长 #include #define M 5 #define N 20 int fun(char (*ss)N, int *n) int i, k=0, len= N; /*found*/ for(i=0; ihigh,查找结束。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main函数。不得增行或删行,也不得更改程
2、序的结构。 #include #define N 10 /*found*/ void fun(int a,int m) int low=0,high=N-1,mid; while(low amid) low=mid+1; else return(mid); return(-1); main() int i,aN=-3,4,7,9,13,45,67,89,100,180 ,k,m; printf(“a数组中的数据如下 :“); for(i=0;i=0) printf(“m=%d,index=%dn“,m,k); else printf(“Not be found!n“); 三、程序设计题( 40
3、分) 3 函数 fun的功能是:将 s所指字符串中 ASC 值为奇数的字符删除,串中剩余字符形成一个新串放在 t所指的数组中。 例如。若 s所指字符串中的内容为: ”ABCDEFGl2345”,其中字符 A的 ASC码值为奇数、 、字符 1的 ASC 码值也为奇数、 都应当删除,其他依此类推。最后 t所指的数组中的内容应是: ”BDF24”。 注意:部分源程序存在文件 PROGl C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include #include void fun(char *s, char t) main() char
4、 s100, t100;void NONO (); printf(“nPlease enter string S:“); scanf(“%s“, s); fun(s, t); printf(“nThe result is: %sn“, t); NONO(); void NONO () /* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ char s100, t100 ; FILE *rf, *wf ; int i ; rf = fopen(“in.dat“,“r“); wf = fopen(“out.dat“,“w“); for(i = 0 ; i amid) 【试题解析
5、】 ( 1)根据主函数中 “k=fun(a,m);”,知道函数 fun应该是返回 int型的函数,所以第一个标识下面定义的 “void fun(int a,int m)”应该改为 “int fun(int a,int m)”。 ( 2)第二个标识下的 “else If(m amid)”是判断 m是否比 amid大,在 while循环中采用的是 if-else if-else语句,显然 “else If”当 中 “If”应当小写,故第二标识下“else If(m amid)”应改为 “else if(mamid)”。 三、程序设计题( 40分) 3 【正确答案】 int i, j=0; for(i=0; istrlen(s); i+)if(si%2=0) tj+=si; tj=0; 【试题解析】 ( 1)首先,求得字符串的长度。 ( 2)然后选择字符串中 ASCII码为偶数的字符。 ( 3)最后将( 2)中选择出的字符复制到指定的字符数组中。