1、国家二级 C语言机试(操作题)模拟试卷 102及答案与解析 一、程序填空题 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()
2、 char ssMN=“shanghai“, “guangzhou“, “beijing“, “tianjing“, “cchongqing“; int i; printf(“nThe original 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
3、string: n“); gets(s); printf(“n please enter the character to search: “); c=getchar(); fun(s, c); printf(“nThe result is sn“, s); 三、程序设计题 3 请编一个函数 fun(char*s),函数的功能是把 S所指字符串中的内容逆置。 例如:字符串中原有的字符串为: abcdefg,则调用该函数后,串中的内容为:gfedcba。 注意:部分源程序存在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。
4、 #include #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(cha
5、r *str, char ch) (2)if(*str !=ch) (3)str1=0; 【试题解析】 函数功能首先是查找子串再判断。 (1)第一个标识下, “void fun(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); 【试题解析】 该程序功能是字符串中的内容逆置。把字符串中字符逆置,就是把字符串中的第一个元素和最后一个元素交换,第二个元素和倒数第二个元素交换,直到所有元素交换完成为止。