所属年份:2010.9;2011.3;2012.3;2012.9
下列给定程序中,函数fun的功能是:计算如下公式
直到,并且把计算结果作为函数值返回。
例如,若形参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)
【考点分析】
本题考查:基本算术运算时的类型转换,其转换规则为:
如果双目运算符两边运算数的类型一致,则所得结果的类型与运算数的类型一致;
如果双目运算符两边运算的类型不一致,系统将自动进行类型转换,使运算符两边的类型达到一致后,再进行运算规律见下表。
运算数1
运算数2
转换结果类型
短整型
大整型
短整型→长整型
整型
大整型
整型→长整型
字符型
整型
字符型→整型
有符号整型
无符号整型
有符号整型→无符号整型
整型
浮点型
整型→浮点型
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的结果转换为整型
所属年份:2010.9;2011.3;2012.3;2012.9
下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。和值通过函数值返回。
例如,若n=5,则应输出8.391667。
请改正程序中的错误,使其得出正确的结果。
注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!
#include
/************found************/
void fun ( int n )
{ int a, b, c, k; double s;
s = 0.0; a = 2; b = 1;
for ( k = 1; k <= n; k++ ) {
/************found************/
s = s + (Double)a / b;
c = a; a = a + b; b = c;
}
return s;
}
main( )
{ int n = 5;
printf( "\nThe value of function is: %lf\n", fun ( n ) );
}
【参考答案】
(1)double fun(int n)
(2)s=s+(double)a/b;
【考点分析】
本题考查:函数定义,函数定义的一般形式为:"类型标识符 函数名(形式参数表列)",其中类型标识符指明了本函数的类型,函数的类型实际上是函数返回值的类型。
【解题思路】
(1)由语句"return(s)"和变量s定义为double数据类型可知,该函数定义时其类型标识符为double类型。
(2)注意数据类型double的书写格式。
【解题宝典】
确定函数类型标识符在填空和改错题中经常考到,如果函数没有返回值,则函数定义为vo