国家计算机二级C语言历
所属年份:2010.9;2011.3;2012.3;2012.9
下列给定程序中,函数fun 的功能是:计算如下公式
()()()
12222213572462n n s n -⨯+=
-+-⨯…-1直到
()
()3
2
21102n n -⨯+≤⨯,并
且把计算结果作为函数值返回。
例如,若形参e 的值为1e -3,则函数返回值为0.551690。请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C 中。 不得增行或删行,也不得更改程序的结构!
#include double fun(double e)
{ int i, k; double s, t, x; s=0; k=1; i=2;
/**********found**********/ x=__1__/4;
/**********found**********/ while(x __2__ e) { s=s+k*x; k=k* (-1); t=2*i;
/**********found**********/ x=__3__/(t*t); i++; }
return s; }
main()
{ double e=1e-3;
printf("\nThe result is: %f\n",fun(e)); }
【参考答案】
(1)3.0或(double)3 (2)> (3) (t +1) 【考点分析】
本题考查:基本算术运算时的类型转换,其转换规则为:
如果双目运算符两边运算数的类型一致,则所得结果的类型与运算数的类型一致;
如果双目运算符两边运算的类型不一致,系统将自动进行类型转换,
while 循环语句,一般考查如何根据题意确定循环条件,以及如何通过循环变量变化实现循环操作。 【解题思路】
填空1:变量x 定义为double 类型,而运算符"/"后面是整型数,所以给x 赋值时,需要注意数据类型,此处不能将3.0写成3。
填空2:while 循环语句的循环条件,根据题意确定循环变量应大于1e -3,因此此处应填">"。
填空3:表达式的通项是(2*i+1)/(2*i)2 ,由于程序中已定义t=2*i ,所以此处应该填写(t+1)。 【解题宝典】
本题填空1还可以运用强制类型转换来实现。强制类型转换是通过类型转换运算来实现的。其一般形式为:"(类型说明符) (表达式)"。其功能是:把表达式的运算结果强制转换成类型说明符所表示的类型。 例如:
(float) a 把a 转换为实型
(int)(x +y) 把x +y 的结果转换为整型