国家二级(C语言)机试模拟试卷390 (题后含答案及解析)
题型有:1. 程序填空题 2. 程序修改题 3. 程序设计题
程序填空题(30分)
1. 请补充main函数,该函数的功能是:从键盘输入只有两个整数参与运算的一个四则运算式,然后计算出它的值。注意数字全部为正整数。 例如,输入308*28,结果为8624.000000。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。 试题程序: # include<stdio, h> main ( )
{ int a=0, b=0, flag=l, fg=l; float result; char *p, ch; char str[10]; clrscr ( ); printf(“\\n Input a string \\n”); gets (str); p=str; while (*p) { if (*p>=‘0’ &&*p<=‘9’
&& flag==l ) a=【 】; else if (fg) { ch=*p; flag=2; fg=0; } if (*p>=‘0 ‘ &&*p<=‘9’ &&flag==2) b=【 】; p++; } switch(【 】) { case ‘+’: result=a+b;break; case ‘-’: result=a-b;break; case ‘*’ :result=a*b;break; case ‘/’ :result= (float) a/b;break; printf (“\\nresult=%f”, result); }
正确答案:a*l0+*p-’0’b*10+*p-’0’ch
解析:第一空:变量a用来保存第一个整数,*p-‘0’ 得到指针p所指的数字字符的对应数字。第二空:同理,变量b用来保存第二个整数。第三空:字符ch中保存的是四则运算符,而switch语句中case后面的常量表达式都是运算符,所以为了能够匹配,switch后面括号中的表达式应该为ch。
程序修改题(30分)
2. 下列给定程序中,函数fun( )的功能是:删除字符串s中所有空白字符(包括Tab字符、回车符及换行符)。输入字符串时用’#’结束输入。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构. 试题程序: #include <string.h> #include <stdio.h> #include <ctype.h> fun(char *p) { int !i, t; char c[80]; for(i=0,t=0;p[i];i++) if(!isspace(*(p+i))) c[t++]=p[i]; /**********************************/ c[t]=‘\\0’; strcpy(p,c); } main( ) {char c,s[80]; int i=0; printf(“Input a string: “); c=getchar( ); while(c!=‘#’) ( s[i]=c;i++;c=getchar( );} s[i]=“\\0”; fun(s); puts(s); }
正确答案:错误:c[t]=“\\0”, 正确:c[t]=‘\\0’
解析:注意,该程序的if条件中应用了isspace函数,该函数的功能是检查ch是否空格、跳格符(制表符)或换行符。
程序设计题(40分)
3. 编写函数fun,它的功能是:求小于形参n同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。例如若n为1000时,程序输出应为:s=153.9090。注意:部分源程序在文件PROGl.C文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
正确答案:
解析:该程序功能是求解同时能被3与7整除的所有自然数之和的平方根。解题过程,首先利用if条件表达式“if(i%3==0&&i%7==0)”求能同时被3与7整除的数,然后在此基础上利用C语言中的sqrt语句求平方根。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务