填空题 下列给定程序中,函数fun的功能是:根据整型参数m,计算如下公式的值。
y=1/(100×100)+1/(200×200)+1/(300×300)+…+1/(m×m)
例如,若m=2000,则应输出0.000160。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdlib.h>
#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+=1.0/d;
}
return(y);
}
void main()
{
int n=2000;
system("CLS");
printf("/nThe result is %lf/n", fun(n));
}
【正确答案】
【答案解析】(1)double fun(int m)
(2)for(i=100; i<=m; i+=100) [解析] (1)题目要求在函数fun中求级数前m项和,可用循环语句,每次计算级数中的一项,然后累加。第一处错误在于定义fun(int m),由函数的返回值可知应该定义为double fun(int m)。
(2)for(i=100, i<=m, i+=100)中是一个简单的语法错误。for循环语句的形式为for(表达式1;表达式2;表达式3) ,其表达式之间应以“;”相隔。