给定程序MODI1.C中函数fun的功能是:根据整型形参m的值,计算如下公式的值:
例如,若m中的值为5,则应输出0.536389。
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
文件MODI1.C内容如下:
#include<stdio.h>
double fun(int m)
double y=1.0;
int i;
/**********found**********/
for(i=2;i<m;i++)
/**********found**********/
y-=1/(i*i);
return(y);
void main( )
int n=5;
printf("\nThe result is%1f\n",fun(n));
参考答案:第1处:将“for(i=2;i<m;i++)”改为“for(i=2;i<=m;i++)”。
第2处:将“y-=1/(i*i);”改为“y-=1.0/(i*i);”。
解析:
题目要求计算公式[*]的值,在程序中公式的值存放在变量y中,且y的初值为1,所以,循环是从公式的第二项开始,分母的变化规律是:从2开始循环到m(包括m在内),所以循环控制变量i的值应该从2开始循环到m结束。第1处错误是循环条件出错,应该使用“<=”。第2处错误可能不太容易发现,由于变量i是整型,1也是一个整数,所以本程序中“1/(i*i)”的结果是0,想要得到实除的结果,最简单的办法就是把“1”改为“1.0”。