问答题 请编写函数fun,其功能是:计算并输出下列多项式的值。
S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)
例如,若主函数从键盘给n输入8后,则输出为S=0.662872。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdio.h>
double fun(int n)
{
}
void main()
{
int n;
double s;
printf("/nlnput n:");
scanf("%d", &n);
s=fun(n);
printf("/nS=%f/n", s);
}
【正确答案】
【答案解析】double fun(int n)
{
int i;
double s=0.0;
for(i=1; i<=n; i++)
s=s+(1.0/(2*i-1)-1.0/(2*i)); /*计算S=(1-1/2)+(1/3-1/4)+(1/(2n-1)-1/2n)*/
return s;
} [解析] 对于求多项式值的题目,一般都使用循环语句来累加计算多项式的通项。本题中多项式的通项为1/(2n-1)-1/2n,循环变量的取值范围为1~n。注意,存放累加和的变量s要定义为实型,累加时要进行类型转换。