1、全国计算机二级 C语言上机试题 75+2015年及答案解析(总分:30.00,做题时间:90 分钟)1.给定程序中,函数 fun的功能是:对形参 ss所指字符串数组中的 M个字符串按长度由短到长进行排序。ss所指字符串数组中共有 M个字符串,且串长。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include #include #define M 5 #define N 20 void fun(char (*ss)N) int i, j, k, nM; c
2、har tN; for(i=0; i for(i=0; i k=i; /*found*/ for(j=_1_; j /*found*/ if(nknj) _2_; if(k!=i) strcpy(t,ssi); strcpy(ssi,ssk); /*found*/ strcpy(ssk,_3_); nk=ni; main() char ssMN=“shanghai“,“guangzhou“,“beijing“,“tianjing“,“cchongqing“; int i; printf(“/nThe original strings are :/n“); for(i=0; i printf(“
3、/n“); fun(ss); printf(“/nThe result :/n“); for(i=0; i (分数:10.00)_2.给定程序 MODI1.C中函数 fun 的功能是:判断 ch中的字符是否与 str所指串中的某个字符相同; 若相同,什么也不做,若不同,则将其插在串的最后。 请改正程序中的错误,使它能进行正确的操作。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include #include /*found*/ void fun(char str, char ch ) while ( *str /*found*/ if ( *str
4、 = ch ) str 0 = ch; /*found*/ str1 = 0; main( ) char s81, c ; printf( “/nPlease enter a string:/n“ ); gets ( s ); printf (“/n Please enter the character to search : “ ); c = getchar(); fun(s, c) ; printf( “/nThe result is %s/n“, s); (分数:10.00)_3.请编一个函数 fun(char *s),函数的功能是把 s所指字符串中的内容逆置。 例如:字符串中原有的字符
5、串为:abcdefg,则调用该函数后, 串中的内容为:gfedcba。 注意: 部分源程序存在文件 PROG1.C中。请勿改动主函数 main和其它函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 给定源程序: #include #include #define N 81 fun ( char *s ) main( ) char aN; printf ( “Enter a string : “ ); gets ( a ); printf ( “The original string is : “ ); puts( a ); fun ( a ); printf(“/n“); p
6、rintf ( “The string after modified : “); puts ( a ); NONO( ); (分数:10.00)_全国计算机二级 C语言上机试题 75+2015年答案解析(总分:30.00,做题时间:90 分钟)1.给定程序中,函数 fun的功能是:对形参 ss所指字符串数组中的 M个字符串按长度由短到长进行排序。ss所指字符串数组中共有 M个字符串,且串长。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include #i
7、nclude #define M 5 #define N 20 void fun(char (*ss)N) int i, j, k, nM; char tN; for(i=0; i for(i=0; i k=i; /*found*/ for(j=_1_; j /*found*/ if(nknj) _2_; if(k!=i) strcpy(t,ssi); strcpy(ssi,ssk); /*found*/ strcpy(ssk,_3_); nk=ni; main() char ssMN=“shanghai“,“guangzhou“,“beijing“,“tianjing“,“cchongqin
8、g“; int i; printf(“/nThe original strings are :/n“); for(i=0; i printf(“/n“); fun(ss); printf(“/nThe result :/n“); for(i=0; i (分数:10.00)_正确答案:(第一处:内循环赋初值,应填:i+1。 第二处:找出最短的一个长度,所以应填:m=j。 第三处:交换字符串,所以应填:t。)解析:2.给定程序 MODI1.C中函数 fun 的功能是:判断 ch中的字符是否与 str所指串中的某个字符相同; 若相同,什么也不做,若不同,则将其插在串的最后。 请改正程序中的错误,使它
9、能进行正确的操作。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include #include /*found*/ void fun(char str, char ch ) while ( *str /*found*/ if ( *str = ch ) str 0 = ch; /*found*/ str1 = 0; main( ) char s81, c ; printf( “/nPlease enter a string:/n“ ); gets ( s ); printf (“/n Please enter the character to se
10、arch : “ ); c = getchar(); fun(s, c) ; printf( “/nThe result is %s/n“, s); (分数:10.00)_正确答案:(第一处:第 1个形参应该是字符串类型,所以应改为:void fun(char *str, char ch)。 第二处:应该是判断不相等,所以应改为:if(*str!=ch)。 第三次:置字符串结束符错误,所以应改为:str1 = 0;。)解析:3.请编一个函数 fun(char *s),函数的功能是把 s所指字符串中的内容逆置。 例如:字符串中原有的字符串为:abcdefg,则调用该函数后, 串中的内容为:gfe
11、dcba。 注意: 部分源程序存在文件 PROG1.C中。请勿改动主函数 main和其它函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 给定源程序: #include #include #define N 81 fun ( char *s ) main( ) char aN; printf ( “Enter a string : “ ); gets ( a ); printf ( “The original string is : “ ); puts( a ); fun ( a ); printf(“/n“); printf ( “The string after modified : “); puts ( a ); NONO( ); (分数:10.00)_正确答案:(fun ( char *s ) char bN ; int i = 0, j ; memset(b, 0, N) ; for(j = strlen(s) - 1 ; j = 0 ; j-) bi+ = sj ; strcpy(s, b) ; )解析: