1、国家二级 C语言机试(操作题)模拟试卷 154及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:对形参 ss所指字符串数组中的 M个字符串按长度由短到长进行排序。 SS所指字符串数组中共有 M个字符串,且串长 #include #define M 5 #define N 20 void fun(char (*ss)N) int i, j, k, nM; char tN; for(i=0; inj)_2_; if(k!=i) strcpy(t, ssi); strcpy(ssi, ssk); *found* strcpy(ssk, _3_); nk=ni; main() cha
2、r ssMN=“shanghai“, “guangzhou“, “beijing“, “tianjing“, “cchongqing“); int i; printf(“ nThe orignal strings are: n“); for(i=0; i #include *found* void fun(char str, char ch) while (*str *str!=ch) str+; *found* if(*str=ch) str0=ch; *found* str1=0; main() char s81, c; printf(“ nPlease enter a string: n
3、“); gets(s); printf(“ n Please enter the character to search: “); c=getchar(); fun(s, c); printf(“ nThe result is s n“, s); 三、程序设计题 3 请编一个函数 fun(char*s),函数的功能是把 s所指字符串中的内容逆置。 例如:字符串中原有的字符串为: abcdefg,则调用该函数后,串中的内容为:gfedcba。 注意:部分源程序存在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #incl
4、ude #include #define N 81 fun(char *s) NONO() *请在此函数内打开文件,输入测试数据,调用 fun函数,输出数据,关闭文件。 * int i; char aN; FILE *rf, *wf; rf=fopen(“in dat“, “r“); wf=fopen(“out dat“, “w“); for(i=0; inj,则把 j赋给 k,即第二空处应为 “k=j”。 第三空: if(k!=i)说明找到了新的更短的字符串,那么把它和第 i个字符串交换,因此第三空处应为 “t”。 二、程序修改题 2 【正确答案】 (1)void fun(char *str
5、, char ch) (2)if(*str !=ch) (3)str1= 0; 【试题解析】 函数功能首先是查找子串再判断。 (1)第一个标识下, “voidfun(char str, charch)”根据主函数中 的 fun函数的调用“fun(s, c)”,知道 s为数组名,所以传的应该是数组地址,所以应改为 “void fun(char*str,char ch)”。 (2)while循环中对 ch与 str进行匹配检查,第二个标识下,是当不同时执行连接操作,那么判断 *str与 ch是否不同的表达式应该是 “if(*str!=ch)”。 (3)第三个标识下,连接后的新串要添加结尾符,所以正确的表达是将“str1=0: ”改为 “str1= 0; ”。 三、程序设计题 3 【正确答案】 char bN; int i=0, j; memset(b, 0, N); for(j=strlen(s)-1; j=0; j-)bi+= sj; strcpy(s, b); 【试题解析】 该程序功能是字符串中的内容逆置。把字符串中字符逆置,就是把字符串中的第一个元素和最后一个元素交换,第二个元素和倒数第二个元素交换,直到所有元素交换完成为止。