1、二级 C 语言-177 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充函数 proc(),该函数的功能是:依次取出字符串中所有的小写字母以形成新的字符串,并取代原字符串。 例如,若输入:everyONE!,则输出:every。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #includestdio.h #includeconio.h void proc(char*str) int i=
2、0; char*p=str; while( 1) if(*p=“a“ 2; p+; stri= 3; void main() char str80; system(“CLS“); printf(“/nEnter a string: “); gets(str); printf(“/n/nThe string is: %s/n“, str); proc(str); printf(“/n/nThe string of changing is: %s/n“, str); (分数:30.00)二、程序改错题(总题数:1,分数:40.00)2.下列给定函数中,函数 proc()的功能是:统计字符串中各元音
3、字母(即 A,E,I,O,U)的个数。注意:字母不分大小写。例如,输入 There are two books,则应输出是 1 2 0 3 0。 请修改程序中的错误,使它能得出正确的结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdlib.h #includeconio.h #includestdio.h /*found* proc(char*str, int num5) int k, i=5; for(k=0; ki; k+) /*found* numi=0; for(; *str; str+) i=-1; /*found*
4、switch(str) case“a“: case“A“: i=0; break; case“e“: case“E“: i=1; break; ase “i“: case“I“: i=2; break; case“o“: case“O“: i=3; break; case“u“: case“U“: i=4; break; if(i=0) numi+; void main() char s181; int num15, i; system(“CLS“); printf(“/nPlease enter a string: “); gets(s1); proc(s1, num1): for(i=0;
5、 i5; i+)printf(“%d“, num1i); printf(“/n“); (分数:40.00)_三、程序设计题(总题数:1,分数:30.00)3.请编写一个函数 proc(),它的功能是:比较 2 个字符串的长度(不得调用 C 语言提供的求字符串长度的函数),函数返回较短的字符串。若 2 个字符串长度相等,则返回第 1 个字符串。 例如,输入 shanghaiCRhebeiCR(CR为 Enter 键),函数将返回 hebei。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填入所编写的若干语句。 试题程序: #inc
6、ludestdio.h char*proc(char*str, char*1) void main() char a20, b10; printf(“Input 1th string: “); gets(a); printf(“Input 2th string: “); gets(b); printf(“%s“, proc(a, b); (分数:30.00)_二级 C 语言-177 (1)答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充函数 proc(),该函数的功能是:依次取出字符串中所有的小写字母以形成新的字符串,并取代原字符串。
7、 例如,若输入:everyONE!,则输出:every。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #includestdio.h #includeconio.h void proc(char*str) int i=0; char*p=str; while( 1) if(*p=“a“ 2; p+; stri= 3; void main() char str80; system(“CLS“); printf(“/nEnter a string: “);
8、gets(str); printf(“/n/nThe string is: %s/n“, str); proc(str); printf(“/n/nThe string of changing is: %s/n“, str); (分数:30.00)解析:*p i+ “/0“解析 由函数 proc()可知,指针变量 p 是指向字符串 str 的指针,用来判断字符串是否结束,因此,第一处填“*p”;变量 i 为新字符串数组的下标,每检查到一个符合要求的字符,数组下标加 1,因此,第二处填“i+”;最后,要为新的字符串数组添加结束符,因此,第三处填“/0“”。二、程序改错题(总题数:1,分数:40.
9、00)2.下列给定函数中,函数 proc()的功能是:统计字符串中各元音字母(即 A,E,I,O,U)的个数。注意:字母不分大小写。例如,输入 There are two books,则应输出是 1 2 0 3 0。 请修改程序中的错误,使它能得出正确的结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdlib.h #includeconio.h #includestdio.h /*found* proc(char*str, int num5) int k, i=5; for(k=0; ki; k+) /*found* numi=
10、0; for(; *str; str+) i=-1; /*found* switch(str) case“a“: case“A“: i=0; break; case“e“: case“E“: i=1; break; ase “i“: case“I“: i=2; break; case“o“: case“O“: i=3; break; case“u“: case“U“: i=4; break; if(i=0) numi+; void main() char s181; int num15, i; system(“CLS“); printf(“/nPlease enter a string: “)
11、; gets(s1); proc(s1, num1): for(i=0; i5; i+)printf(“%d“, num1i); printf(“/n“); (分数:40.00)_正确答案:()解析:(1)错误:proc(char*str, int num5) 正确:void proc(char*str, int num5) (2)错误:numi=0; 正确:numk=0; (3)错误:switch(str) 正确:switch(*str) 解析 由主函数中可知,调用函数无须返回值,因此,“proc(char*str, int nun5)”应改为“void proc(char*str, int
12、 num5)”;由函数 proc()可知,变量 k 为数组 num 的下标,因此,“numi=0;”应改为“numk=0;”;判断字符串 str 中每一个字符是否为元音字符,switch(str)判断的是 str 指向的地址,因此,应改为“switch(*str)”。三、程序设计题(总题数:1,分数:30.00)3.请编写一个函数 proc(),它的功能是:比较 2 个字符串的长度(不得调用 C 语言提供的求字符串长度的函数),函数返回较短的字符串。若 2 个字符串长度相等,则返回第 1 个字符串。 例如,输入 shanghaiCRhebeiCR(CR为 Enter 键),函数将返回 hebe
13、i。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填入所编写的若干语句。 试题程序: #includestdio.h char*proc(char*str, char*1) void main() char a20, b10; printf(“Input 1th string: “); gets(a); printf(“Input 2th string: “); gets(b); printf(“%s“, proc(a, b); (分数:30.00)_正确答案:()解析:char*proc(char*str, char*t) int i, j; for(i=0; stri!=“/0“; i+); /i 是为了计算 s 字符串的长度 for(j=0; tj!=“/0“; j+); /j 是为了计算 t 字符串的长度 if(i=j) return str; /如果 j 大则返回 s 字符串 else/反之则返回 t 字符串 return t; 解析 要返回较短的字符串,首先要计算 2 个字符串的长度。将长度较小的字符串返回到主函数当中。