1、国家二级 C语言机试(操作题)模拟试卷 508及答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.函数 fun的功能是:计算 直到 (分数:2.00)_二、程序修改题(总题数:1,分数:2.00)2.给定程序 MODI1C 中函数 fun的功能是:求整数 x的 y次方的低 3位值。例如,整数 5的 6次方为15625,此值的低 3位值为 625。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构! #include long fun(int x,int y,long *p
2、) int i; long t=l; /*found*/ for(i=l; i_三、程序设计题(总题数:1,分数:2.00)3.请编写函数 fun,其功能是:计算并输出当 xn 一 S n-1 (分数:2.00)_国家二级 C语言机试(操作题)模拟试卷 508答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.函数 fun的功能是:计算 直到 (分数:2.00)_正确答案:(正确答案:(1)x (2)n (3)fabs(t)解析:解析:函数 fun的功能是计算级数和。 第一空:“f=10+x;”f 的初始化为级数的前两项之和,do while循环从第
3、三项 x 2 2 开始计算,第一空处是给 t赋初值,t 表示级数项,“n+;t *=(-10)*x/【2】;”即第一次进入 do循环之后 n的值为 2,故 t的初值应该为 x,第一空处应为“x”。 第二空:由审题分析可知,后一项乘以(一 1)*x除以 n,故第二空处应为“n”。 第三空:循环的终止条件是(x n n!)的绝对值小于 le-6,即只要(x n n!)大于等于 le-6,do 循环就执行,故第三处应为“fabs(t)”,fabs函数的功能是求绝对值。二、程序修改题(总题数:1,分数:2.00)2.给定程序 MODI1C 中函数 fun的功能是:求整数 x的 y次方的低 3位值。例如
4、,整数 5的 6次方为15625,此值的低 3位值为 625。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构! #include long fun(int x,int y,long *p) int i; long t=l; /*found*/ for(i=l; i_正确答案:(正确答案:(1)for(i=1;i=y;i+) (2)t=t1000;)解析:解析:函数的功能是求整数 X的 Y次方的低 3位值。 (1)第一个标识下的“for(i=1;iy;i+)”说明进行了 y-1次方,而不是 y次方,所以将“for(
5、i=1;iy;i+)”改为“for(i=1;i=y;i+)”。(2)题目中要求截取前面求得结果的低三位,因此,第二个标识下“t=t1000;”应该改为“t=t1000;”。三、程序设计题(总题数:1,分数:2.00)3.请编写函数 fun,其功能是:计算并输出当 xn 一 S n-1 (分数:2.00)_正确答案:(正确答案:int n=1;* 循环计数* double sn=1; * 累计数* double xn=1,xn1=0; *x 的 n值,以 及 x的 n一 1值;* while(fabs(xn-xn1)=0000001)* 绝对值是否满足条件* xn=xn*x*(05-n+1)n; *表达式分解以后 xn=(xn 一 1)*x*(05-n+1)n* n+=1; sn+=xn;) *sn 累加上 xn* return(sn);)解析:解析:(1)根据题干中给出的数列,推出每一项分子是在前一项分子的基础上乘以(05-n+1)*x,分母则为阶乘,也就是在前一项分母的基础上乘以 n。 (2)在循环中求得每一项,然后对其进行累加求和。