国家二级C语言机试(操作题)模拟试卷348
程序填空题
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循环就执行,故第三处应为“fabs(t)”,fabs函数的功能是求绝对值。
程序修改题
2.给定程序MODI1.C中函数fun的功能是:求整数x的y次方的低3位值。例如,整数5的6次方为1 5625,此值的低3位值为625。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
long fun (int x,int y,long *p)
{ int i;
long t=1;
t=t* x;
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%1000; ”。
程序设计题
3.请编写函数fun,其功能是:计算并输出当x<0.97时下列多项式的值,直到|Sn—Sn—1|<0.000001为止。
1 int n=1; /* 循环计数* /
2 double sn=1; /* 累计数* /
3 double xn=1,xnl=0; /*X的n值,以及x的n—l值; * /
4 while (fabs (xn—xnl))=0.000001) 1*绝对值是否满足条件* /
5 {
6 xn=xn*x*(0.5—n+1)/n; /* 表达式分解以后xn=(xn—1)*x*(0 .5—n+1)/n*/ {
7 n+=1;
8 sn+=xn, } /*sn累加上xn*/
9 return (sn);
解析:(1)根据题干中给出的数列,推出每一项分子是在前一项分子的基础上乘以(0.5—n+1)*x,分母则为阶乘,也就是在前一项分母的基础上乘以n。
(2)在循环中求得每一项,然后对其进行累加求和。
本文档预览:3600字符,共2035字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载