1、国家二级 C语言机试(操作题)模拟试卷 676及答案与解析 一、程序填空题 1 下列给定程序中,函数 fun的功能是:在形参 ss所指字符串数组中查找与形参 t所指字符串相同的串,找到后返回该串在字符串数组中的位置 (即下标值 ),若未找到则返回 -1。 ss所指字符串数组中共有 N个内容不同的字符串,且串长小于 M。 请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #include string h #define N5 #deline M8 int fun(char(*ss)M,
2、 char*t) int i; *found* for(i=0; i _1_; i+) if(stremp(ssi, t)=0) *found* return_2_; return-1; main() char chNM=“if“, “while“, “smtch“, “int“, “for“, tM; int n, i; printf(“ nThe original string n n“); for(i=0; i N; i+) puts(chi); printf(“ n“); printf(“ nEnter a string for search: “); gets(t); n=fun(c
3、h, t); *found* if(n=_3_) printf(“ nDont found! n“); else printf(“ nThe position is d n“, n); 二、程序修改题 2 下列给定程序中, 函数 fun的功能是:删除指针 p所指字符串中的所有空白字符(包括制表符、回车符及换行符 )。 输入字符串时用 #结束输入。 请改正程序中的错误,使它能输出正确的结果。 注意:不得增行或删行,也不得更改程序的结构 ! 试题程序: #include string h #include stdio h #include ctype h fun(char*p) int i, t;
4、 char c80; *found* For(i=0, t=0; pi; i+) if(!isspace(*(p+i) ct+=pi; *found* ct=“ 0“; strcpy(p, c); main() char c, s80; int i=0; printf(“Input a string: “); c=getchar(); while(c!=#) si=c; i+; c=getchar(); si= 0; fun(s); puts(s); 三、程序设计题 3 函数 fun的功能是:将 s所指字符串中除下标为偶数,同时 ASCII码值也为偶数的字符外,其余的全部删除;字符串中剩余字符
5、所形成的新串放在 t所指的数组中。 例如,若 s所指字符串中的内容为 “ABCDEFGl23456“,其中字符 A的 ASCII码值为奇数,因此应当删除;字符 B的 ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;字符 2的 ASCII码值为偶数,在数组中的下标也为偶数,因此不应当删除,其他以此类推。最后 t所指的数组中的内容应是 “246“。 注意:请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 试题程序: #include stdio h #include string h void fun(char*s, char t) m
6、ain() char s100, t100; void NONO(); printf(“ nPlease enter string s: “); scanf(“ s“, s); fun(s, t); printf(“ nThe result is: s n“, 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 10; i+) f
7、scanf(rf, “ s“, s); fun(s, t); fprintf(wf, “ s n“, t); fclose(if); fclose(wf); 国家二级 C语言机试(操作题)模拟试卷 676答案与解析 一、程序填空题 1 【正确答案】 (1)N (2)i (3)-1 【试题解析】 本题考查: for循环语句;函数返回值; if语句条件表达式。 填空 1:变量 i是循环变量,它的取值范围是在 0到 N之间。 填空 2:如果 ss所指字符串数组中的字符串和 t所指字符串相同的话,则返回其下标值,即 return i;否则返回 -1,即 return-1;。 填空 3:在 main函数
8、中输出最后结果,判断函数返回值 n,如果 n=-1,说明没有找到,否则输出 n。 二、程序修改题 2 【正确答案】 (1)for(i=0, t=0; pi; i+) (2)ct= 0; 【试题 解析】 本题考查: C语言关键字;字符串结束标识 0。 该题目考查 C语言关键字的书写, C语言中关键字是区分大小写的。另外为字符串结尾添加结束符时应书写为 0,而非 “ 0“, 0表示一个字符串。该程序的if条件中应用了 isspace函数,该函数的功能是检查 ch是否空格、跳格符 (制表符 )或换行符。 三、程序设计题 3 【正确答案】 void fun(char*s, char t) int i, j=0; for(i=0; si!= 0; i+) if(i 2=0&si 2=0) *将 s所指字符串中下标和 ASCII码值都为偶数的字符放入数组 t中 * tj+=si; tj= 0; *在字符串最后加上结束标识 * 【试题解析】 本题考查:循环判断结构;字符串的操作;逻辑运算符的使用。 本题要求删除下标为偶数同时 ASCII码值也为偶数的字符,即保留下标为偶数同时 ASCII码值也为偶数的字符。循环语句用于遍历字符串,条件语句用于判断当前字符是否符合要求。注意判断条件是下标为偶数,同时 ASCII码值也为偶数,所以应使用逻辑与 “&”运算符。