1、国家二级( C语言)机试模拟试卷 390及答案与解析 一、程序填空题( 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 st
2、r10; clrscr (); 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(【 】 ) 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); 二、程序修改题(
3、30分) 2 下列给定程序中,函数 fun()的功能是:删除字符串 s中所有空白字符 (包括 Tab字符、回车符及换行符 )。输入字符串时用 #结束输入。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 试题程序: #include string.h #include stdio.h #include ctype.h fun(char *p) int !i, t; char c80; for(i=0,t=0;pi;i+) if(!isspace(*(p+i) ct+=pi; /*/ ct=0; strcpy(p,c); main(
4、) char c,s80; int i=0; printf(“Input a string: “); c=getchar(); while(c!=#) ( si=c;i+;c=getchar(); si=“0“; fun(s); puts(s); 三、程序设计题( 40分) 3 编写函数 fun,它的功能是:求小于形参 n同时能被 3与 7整除的所有自然数之和的平方根,并作为函数值返回。例如若 n为 1000时,程序输出应为: s153 909064。注意:部分源程序在文件 PROGl C文件中。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。国
5、家二级( C语言)机试模拟试卷 390答案与解析 一、程序填空题( 30分) 1 【正确答案】 a*l0+*p-0 b*10+*p-0 ch 【试题解析】 第一空:变量 a用来保存第一个整数, *p-0 得到指针 p所指的数字字符的对应数字。第二空:同理,变量 b用来保存第二个整数。第三空:字符ch中保存的是四则运算符,而 switch语句中 case后面的常量表达式都是运算符,所以为了能够匹配, switch后面括号中的表达式应该为 ch。 二、程序修改题( 30分) 2 【正确答案】 错误: ct=“0“, 正确: ct=0 【试题解析】 注意,该程序的 if条件中应用了 isspace函数,该函数的功能是检查 ch是否空格、跳格符 (制表符 )或换行符。 三、程序设计题( 40分) 3 【正确答案】 【试题解析】 该程序功能是求解同时能被 3与 7整除的所有自然数之和的平方根。 解题过程,首先利用 if条件表达式 “if(i 3 0 i 7=0)”求能同时被 3与 7整除的数,然后在此基础上利用 C语言中的 sqrt语句求平方根。