问答题 请编写函数fun,其功能是:计算并输出下列多项式的值, S=(1—1/2)+(1/3—1/4)+…+(1/(2n一1)一1/2n) 例如,若主函数从键盘给n输入8后,则输出为S=0.662872。 注意:要求n的值大于1但不大于100。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include<stdio.h> double fun(int n) { } main() { int n;double s; void NONO(); printf("Input n:"); scanf("%d",&n); s=fun(n): printf("\ns=%f\n",s); NONO();}void NONO(){ int n,i;double s; for(i=0;i<10;i++) { s=fun(n); }}
【正确答案】正确答案: 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要定义为实型,累加时要进行类型转换。