国家二级C语言机试(操作题)模拟试卷827
程序填空题
1.函数fun的功能是:计算
(1)x
(2)n
(3)fabs(t)
解析:函数fun的功能是计算级数和。
第一空:“f=1.0+x;”f的初始化为级数的前两项之和,do while循环从第三项x2/2开始计算,第一空处是给t赋初值,t表示级数项,“n++;t*=(-1.0)*x/___2___;”即第一次进入do循环之后n的值为2,故t的初值应该为x,第一空处应为“x”。
第二空:由审题分析可知,后一项乘以(-1)*x除以n,故第二空处应为“n”。
第三空:循环的终止条件是(xn/n!)的绝对值小于le-6,即只要(xn/n!)大于等于le-6,do循环就执行,故第三处应为“labs(t)”,fabs函数的功能是求绝对值。
程序修改题
2.给定程序MODI1.C中函数fun的功能是:求整数X的Y次方的低3位值。例如,整数5的6次方为15625,此值的低3位值为625。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
long fun(int x,int y,long*p)
{ int i;
long t=1;
/**********found**********/
for(i=1;i<y;i++)
t=t*x;
*p=t;
/**********found**********/
t=t/1000;
return t;
}
main()
{long t,r;int x,y;
printf(\\
(1)for(i=1;i<=y;i++)
(2)t=t%1000;
解析:函数的功能是求整数x的y次方的低3位值。(1)第一个标识下的“for(i=1;i<y;i++)”说明进行了y-1次方,而不是y次方,所以将“for(i=1;i<y;i++)”改为“for(i=1;i<=y;i++)”。(2)题目中要求截取前面求得结果的低三位,因此,第二个标识下“t=t/1000;”应该改为“t=t%1000;”。
程序设计题
3.请编写函数fun,其功能是:计算并输出当x<0.97
时下列多项式的值,直到|Sn-Sn-1|<0.000001为止。
int n=1;/*循环计数*/
double sn=1;/*累计数*/
double xn=1,xn1=0; /*x的n值,以及x的n-1值;*/
while(fabs(xn-xn1)>=0.000001)/*绝对值是否满足条件*/
{
xn=xnx*(0.5-n+1)/n;/*表达式分解以后 xn=(xn-1)*x*(0.5-n+1)/n*/
n+=1;
sn+=xn;} /*sn累加上xn*/
return(sn);
解析:(1)根据题干中给出的数列,推出每一项分子是在前一项分子的基础上乘以(0.5-n+1)*x,分母则为阶乘,也就是在前一项分母的基础上乘以n。
(2)在循环中求得每一项,然后对其进行累加求和。
本文档预览:3600字符,共1954字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载