1、二级 C 语言-164 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充 main()函数,该函数的功能是:从键盘输入只有两个整数参与运算的一个四则运算式,然后计算出它的值。注意数字全部为正整数。 例如,输入 30*28,结果为 840.000000。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在 main()函数的横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #includestdio.h void main() int num1=0, num2=0
2、, flag=1, fg=1; float result; char*p, ch; char str10; system(“CLS“); printf(“/n Input a string/n“); gets(str); p=str; while(*p) if(*p=“0“ else if(fg) ch=*p; flag=2; fg=0; if(*p=“0“ p+; switch( 3) case“+“: result=num1+num2; break; case“-“: result=num1-num2; break; case“*“: result=num1*num2; break; ca
3、se“/“: result=(float)num1/num2; break; printf(“/nresult=%f“, result); (分数:30.00)二、程序改错题(总题数:1,分数:40.00)2.下列给定程序中,函数 proc()的作用是:将字符串 str 中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入“abD,dFAD”,则输出“abd,dfad”。 请修改函数 proc()中的错误,使它能得出正确的结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdio.h #includestdlib.h #in
4、cludestring.h #includeconio.h char*proc(char str) int I; for(I=0; strI; I+) /*found* if(“A“=strI|(strI=“Z“) strI+=32; return(str); void main() char str81; system(“CLS“); printf(“/nPlease enter a string: “); gets(str); printf(“/nThe result string is: /n%s/n“, proc(str); (分数:40.00)_三、程序设计题(总题数:1,分数:30
5、.00)3.请编写函数 proc(),其功能是:计算并输出给定 10 个数的方差。 其中 (分数:30.00)_二级 C 语言-164 (1)答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充 main()函数,该函数的功能是:从键盘输入只有两个整数参与运算的一个四则运算式,然后计算出它的值。注意数字全部为正整数。 例如,输入 30*28,结果为 840.000000。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在 main()函数的横线上填入所编写的若干表达式或语句。 试题程序: #include
6、stdlib.h #includestdio.h void main() int num1=0, num2=0, flag=1, fg=1; float result; char*p, ch; char str10; system(“CLS“); printf(“/n Input a string/n“); gets(str); p=str; while(*p) if(*p=“0“ else if(fg) ch=*p; flag=2; fg=0; if(*p=“0“ p+; switch( 3) case“+“: result=num1+num2; break; case“-“: result
7、=num1-num2; break; case“*“: result=num1*num2; break; case“/“: result=(float)num1/num2; break; printf(“/nresult=%f“, result); (分数:30.00)解析:num1*10+*p-“0“ num2*10+*p-“0“ ch解析 首先将运算符号前面的数字字符转化为对应的十进制数放入变量 num1 中。因此,第一处填“num1*10+*p-“0“”;再将运算符号后面的数字字符转换为十进制数放入变量 num2 中,因此,第二处填“num2*10+*p-“0“”;由程序可知,变量 ch
8、 中存放运算符号,因此,第三处填“ch”。二、程序改错题(总题数:1,分数:40.00)2.下列给定程序中,函数 proc()的作用是:将字符串 str 中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入“abD,dFAD”,则输出“abd,dfad”。 请修改函数 proc()中的错误,使它能得出正确的结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdio.h #includestdlib.h #includestring.h #includeconio.h char*proc(char str) int I; fo
9、r(I=0; strI; I+) /*found* if(“A“=strI|(strI=“Z“) strI+=32; return(str); void main() char str81; system(“CLS“); printf(“/nPlease enter a string: “); gets(str); printf(“/nThe result string is: /n%s/n“, proc(str); (分数:40.00)_正确答案:()解析:错误:if(“A“=strI|(strI=“Z“) 正确:if(str1=“A“) int i; for(i=0; i10; i+) x1=x1+xi; /x1 放其数组中的元素和 x1=x1/10; /求其平均数 for(i=0; i10; i+) s=s+(xi-x1)*(xi-x1); /s 为其平方差 return sqrt(s/10); /最后把其所得到的方差返回到主函数中 解析 题目要求求方差,因此首先我们应通过循环求得其平均数,然后通过循环来求其平方差,最后求其方差,把方差返回到主函数中。