1、二级 C 语言-380 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充函数 proc(),该函数的功能是将字符串 str 中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入“How Are You?”,则输出“how are you?”。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的横线上填入所编写的若干表达式或语句。 试题程序: #includestdio.h #includestring.h #includeconio.h char*proc(char
2、str) int i; for(i=0;stri;i+) if(stri=“A“) return( 3); void main() char str81; printf(“/nPlease enter a string:“); gets(str); printf(“/nThe result string is:/n%s“, proc(str); (分数:30.00)二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 proc()的功能是逐个比较 str1,str2 两个字符串对应位置中的字符,把比ASCII 值大或相等的字符依次存放到 str 数组中,形成一个新的字符串。
3、例如,str1 中的字符串为 fshADfg,str2 中的字符串为 sdAEdi,则 str 中的字符串应为 sshEdig。 请修改程序中的错误,使它能得到正确结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdio.h #includestring.h void proc(char*p,char*q,char*c) int k=0; while(*p|*q) /*found* if(*p=*q) ck=*q; else ck=*p; if(*p)p+; if(*q)q+; /*found* k+ void main() ch
4、ar str110=“fshADfg“,str210=“sdAEdi“, str80=“/0“; proc(str1,str2,str); printf(“The string str1:“);puts(str1); printf(“The string str2:“);puts(str2); printf(“The result:“);puts(str); (分数:30.00)三、程序设计题(总题数:1,分数:40.00)3.请编写一个函数 proc(),它的功能是:将 str 所指字符串中所有下标为奇数位置的字母转换为大写(若该位置上不是字母,则不转换)。 例如,若输入 abcde123,
5、则应输出 aBcDe123。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填入所编写的若干语句。 试题程序: #includestdlib.h #includeconio.h #includestdio.h #includestring.h void proc(char*str) void main() char tt81; system(“CLS“); printf(“/nPlease enter an string within80 characters:/n“); gets(tt); printf(“/n/nAfter c
6、hanging,the string /n%s“,tt); proc(tt); printf(“/nbecomes/n%s/n“,tt); (分数:40.00)_二级 C 语言-380 (1)答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充函数 proc(),该函数的功能是将字符串 str 中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入“How Are You?”,则输出“how are you?”。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的横线上填入所编写的
7、若干表达式或语句。 试题程序: #includestdio.h #includestring.h #includeconio.h char*proc(char str) int i; for(i=0;stri;i+) if(stri=“A“) return( 3); void main() char str81; printf(“/nPlease enter a string:“); gets(str); printf(“/nThe result string is:/n%s“, proc(str); (分数:30.00)解析:stri=“Z“ stri+=32 str解析 要将字符串中所有的
8、大写字母改为对应的小写字母,首先应该找出字符串中所有的小写字母。判断一个字符是否是大写字母,只要看其是否在 A 和 Z 之间,因此第一处填“stri=“Z“”;每找到一个大写字母,就将其改为小写字母。大写字母与小写字母之间的关系为ASCII 相差 32,因此第二处填“stri+=32”;得到的新的字符串放在 s1 中,要将其返回给主函数,因此第三处填“str”。二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 proc()的功能是逐个比较 str1,str2 两个字符串对应位置中的字符,把比ASCII 值大或相等的字符依次存放到 str 数组中,形成一个新的字符串。 例如
9、,str1 中的字符串为 fshADfg,str2 中的字符串为 sdAEdi,则 str 中的字符串应为 sshEdig。 请修改程序中的错误,使它能得到正确结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdio.h #includestring.h void proc(char*p,char*q,char*c) int k=0; while(*p|*q) /*found* if(*p=*q) ck=*q; else ck=*p; if(*p)p+; if(*q)q+; /*found* k+ void main() char
10、 str110=“fshADfg“,str210=“sdAEdi“, str80=“/0“; proc(str1,str2,str); printf(“The string str1:“);puts(str1); printf(“The string str2:“);puts(str2); printf(“The result:“);puts(str); (分数:30.00)解析:错误: if(*p=*q) 正确: if(*p=*q) 错误:k+ 正确:k+; 解析 题目中要求将 ASCII 码值较大的字符放到新的字符串中,因此 if 的条件判断语句“if(*p=*q)”应改为“if(*p=*
11、q)”;在 C 语言中,每一条语句的结束是以“;”来标识的,因此k+后应该加上分号。三、程序设计题(总题数:1,分数:40.00)3.请编写一个函数 proc(),它的功能是:将 str 所指字符串中所有下标为奇数位置的字母转换为大写(若该位置上不是字母,则不转换)。 例如,若输入 abcde123,则应输出 aBcDe123。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填入所编写的若干语句。 试题程序: #includestdlib.h #includeconio.h #includestdio.h #includestri
12、ng.h void proc(char*str) void main() char tt81; system(“CLS“); printf(“/nPlease enter an string within80 characters:/n“); gets(tt); printf(“/n/nAfter changing,the string /n%s“,tt); proc(tt); printf(“/nbecomes/n%s/n“,tt); (分数:40.00)_正确答案:()解析:void proc(char*str) int i; for(i=0;stri!=“/0“;i+) if(i%2=1/将其转化为大写 解析 要将字符串中为奇数的字母转换为大写,首先应该判断奇数位置上的字符是否为小写字母,若是则将其转换为大写,若不是则不予处理。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1