下列给定程序中,函数fun()的功能是:根据整型参数m,计算如下公式的值。
y=1/(100×100)+1/(200×200)+1/(300×300)+…+1/(m×m)
例如,若m=2000,则应输出0.000160。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <conio.h>
#include <stdio. h>
/*************found**************/
fun (int m)
double y=0, d;
int i;
/*************found**************/
for (i=100, i<=m, i+=100)
d= (double) i* (double) i;
y+=l. 0/d;
return (y);
main ( )
int n=2000;
clrscr();
printf("\nThe result is %lf\n",fun(n));
参考答案:错误:fun(int m) 正确:double fun(int m)
(2)错误:for(i=100,i<=m,i+=100) 正确:for(i=100;i<=m;i+=100)
解析: 题目要求在函数fun()中求级数前m项和,可用循环语句,每次计算级数中的一项,然后累加。此题的难点就在定义fun(int m)中的m的定义,由后面函数的应用可以确定应该定义成double fun(int m)。for(i=100,i<=m,i+=100)中是一个简单的基础错误。