国家二级C语言机试(操作题)模拟试卷612
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新数,作为函数值返回。
例如,输入一个整数27638496,函数返回值为64862。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
unsigned long fun(unsigned long n)
{unsigned long x=0;int t;
while(n)
{t=n%10;
/*********found*********/
if(t%2==【1】)
/*********found*********/
x=【2】+t;
/*********found*********/
n=【3】;
}
return x;
}
main()
{unsigned long n=-1;
while(n>99999999||n<0)
{printf(\\
(1)0
(2)10*x
(3)n/10
解析:填空1:定义变量t用来存放某数的各个位数值,此处判断t是否为偶数,即对2求余结果是否为0。
填空2:将t作为x的个位数,原来x的各个位上升1位,即x=10*x+t。
填空3:每循环一次,通过除法运算,去掉数值最后一位。
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:计算并输出下列级数的前N项和SN,直到SN+1。的值大于q为止,q的值通过形参传入。
(1)s=s+(double)(n+1)/n;
(2)return t:
解析:(1)在C语言中,整数除以整数得出的结果也是整数,因此此处要转换数据类型。
(2)观察while循环,如果返回变量是s,那么返回的是大于q的值,而题中所要返回的是小于q的值,所以应该返回变量t。
程序设计题
3.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun,其功能是:根据以下公式求竹的值(要求精度0.0005,即某项小于0.0005时停止迭代)。
double fun(double eps)
{
double s=0.0,s1=1.0;
int n=1;
while(s1>=eps)/*当某项大于精度要求时,继续求下一项*/
s=s+s1;/*求和*/
{s1=s1*n/(2*n+1);
/*求多项式的每一项*/
n++;
}
return2*s;
}
解析:首先应该定义double类型变量,并且赋初值,用来存放多项式的某一项和最后的总和。从第二项开始以后的每一项都是其前面一项乘以n/(2*n+1),程序中用s1来表示每一项,s表示求和后的结果。需注意s1和s的初值都为1.0,因为循环变量从第二项开始累加。
本文档预览:3600字符,共2016字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载