1、二级 C 语言-211 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充 main()函数,该函数的功能是:从键盘输入一组字符串,以“*”结束输入,并显示出这个字符串。 例如,输入 ABCDEFG*,结果显示 ABCDEFG。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在 main()函数的横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #includestdio.h #define M 80 void main() int i=-1,j=0; char
2、 strM; system(“CLS“); printf(“/n Input a string/n“); do i+; scanf( 1); while( 2); printf(“/n*display the string*/n“); while(ji) printf( 3); j+; (分数:30.00)二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 proc()的功能是:将 str 所指字符串中的字母转换为按字母序列的后续字母(但Z 转化为 A,Z 转化为 a),其他字符不变。 请修改函数 proc()中的错误,使它能得出正确的结果。 注意:不要改动 main()函
3、数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdlib.h #includestdio.h #includectype.h #includeconio.h void proc(char*str) /*found* while(*str!=“) if(*str=“A“ else if(*str=“z“)*str=“a“; else*str+=1; /*found* (*str)+; void main() char str80; system(“CLS“); printf(“/n Enter a string with length 80:/n/n“);gets(s
4、tr); printf(“/n The string:/n/n“);puts(str); proc(str); printf(“/n;n The Cords:/n/n“);puts(str); (分数:30.00)三、程序设计题(总题数:1,分数:40.00)3.请编写函数 proc(),该函数的功能是:将两个两位数的正整数 num1,num2 合并形成一个整数放在 num中。合并的方式是:将 num1 数的十位和个位数依次放在 num 数的十位和千位上,num2 数的十位和个位数依次放在 c 数的百位和个位上。 例如,当 num1=64,num2=18 时,调用到该函数后,num=4168。
5、 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填入所编写的若干语句。 试题程序: #includestdlib.h #includestdio.h #includeconio.h void proc(int num1,int num2,long*num) void main() int num1,num2; long num; system(“CLS“); printf(“Input num1,num2:“); scanf(“%d%d“, proc(num1,num2, printf(“The result is:%1d/n“,
6、num); (分数:40.00)_二级 C 语言-211 (1)答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充 main()函数,该函数的功能是:从键盘输入一组字符串,以“*”结束输入,并显示出这个字符串。 例如,输入 ABCDEFG*,结果显示 ABCDEFG。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在 main()函数的横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #includestdio.h #define M 80 void main() in
7、t i=-1,j=0; char strM; system(“CLS“); printf(“/n Input a string/n“); do i+; scanf( 1); while( 2); printf(“/n*display the string*/n“); while(ji) printf( 3); j+; (分数:30.00)解析:“%c“, else if(*str=“z“)*str=“a“; else*str+=1; /*found* (*str)+; void main() char str80; system(“CLS“); printf(“/n Enter a strin
8、g with length 80:/n/n“);gets(str); printf(“/n The string:/n/n“);puts(str); proc(str); printf(“/n;n The Cords:/n/n“);puts(str); (分数:30.00)解析:错误:while(*str!=“) 正确:while(*str) 错误:(*str)+; 正确:str+; 解析 字符串不结束的标志为*s。因此,“while(*str!=“)”应改为“while(*str)”。每执行完一次循环,指针变量 str 向后移动一个位置,而不是 str 指向的内容加 1。因此,“(*str)
9、+;”应改为“str+;”。三、程序设计题(总题数:1,分数:40.00)3.请编写函数 proc(),该函数的功能是:将两个两位数的正整数 num1,num2 合并形成一个整数放在 num中。合并的方式是:将 num1 数的十位和个位数依次放在 num 数的十位和千位上,num2 数的十位和个位数依次放在 c 数的百位和个位上。 例如,当 num1=64,num2=18 时,调用到该函数后,num=4168。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填入所编写的若干语句。 试题程序: #includestdlib.h #i
10、ncludestdio.h #includeconio.h void proc(int num1,int num2,long*num) void main() int num1,num2; long num; system(“CLS“); printf(“Input num1,num2:“); scanf(“%d%d“, proc(num1,num2, printf(“The result is:%1d/n“,num); (分数:40.00)_正确答案:()解析:void proc(int num1,int num2,long*num) *num=num1%10*1000+num2/10*100+ num1/10*10+num2%10; 解析 要算出变量 num 的值,首先需要得到变量 num1 和 num2 个位和十位上的数字。然后将在千位上的数字乘以 1000,百位上的数字乘以 100,十位上的数字乘以 10,各位上的数字乘以 1,就能得到要求的num。