国家二级(C语言)机试模拟试卷930
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是统计整数n的各位上出现数字1、2、3的次数。并用外部(全局)变量c1、c2、c3返回主函数。
例如,当n=123114350时,结果应该为: c1=3 c2=1 c3=2。
注意:部分源程序在文件blank1.c中。
不得增行或删行,也不得更改程序的结构!
#include
int c1,c2,c3;
void fun(long n)
{
\\t c1=c2=c3=0;
\\t while(n)
\\t {
/*************found**************/
\\t\\tswitch(__1__)
\\t\\t{
\\t\\tcase 1:
/*************found**************/
\\t\\t\\tc1++;__2__;
\\t\\tcase 2:
/*************found**************/
\\t\\t\\tc2++;__3__;
\\t\\tcase 3:
\\t\\t\\tc3++;
\\t\\t}
\\t\\tn/=10;
\\t}
}
void main( )
{
\\t long n=123114350L;
\\t fun(n);
\\t printf(\\
(1) n%10 (2) break (3) break
解析:填空1:要统计长整数n的各个位上出现数字1、2、3的次数,就需要判断各个位上的数是多少。通过n除以10求余,可得到个位上的数,所以填入n%10。
填空2和填空3:switch语句是多 分支选择语句,在每个分支中要加入break,不然会依次执行后面的分支。continue语句的作用是结束当前分支的运行,而break语句的作用是结束整个switch语句的运行。
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun实现的功能是:统计一个无符号整数中各位数字值为0的个数,通过形参传回主函数,并把该整数中各位上最大的数字值作为函数值返回。
例如,若输入无符号整数30800,则数字值为0的位的个数为3,各位上数字值最大的是8。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件modi1.c中。
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
int fun(unsigned n,int *zero)
{
int count=0,max=0,t;
do
{
\\tt=n%10;
\\t/*************found**************/
\\tif(t=0)
\\t\\tcount++;
\\tif(max<t)
\\t\\tmax=t;
\\tn=n/10;
}while(n);
/*************found**************/
zero=count;
return max;
}
void main( )
{
unsigned n;
int zero,max;
printf(\\
(1)if(==0)
(2)*zero=count;
解析:(1)根据题意,此处应该是条件语句,而不是赋值语句,并且在条件表达式中不会出现\\
程序设计题
3.使VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun,其功能是:计算并输出下列多项式的值。
double fun(int n)
{
double sum=0,tmp=1;
for(i=1;i<=n;i++)
{
tmp=tmp*i;
sum+=1.0/tmp:;
}
return sum;
}
解析:本题要求计算并输出多项式的值通式为: 1/(1*2*….. *n).在给出的参考程序中;由于函数的返回值为双精度型所以定义sum、tmp为双精度型,再对符合条件的n使用中间变量tmp求出1到n的累乘值,即题目中每个多项式中分子的值,再通过sum+=1.0/tmp;计算出所有多项式之和,最终返回值。
本文档预览:3600字符,共2607字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载