下列给定程序中,函数fun()的功能是根据整型形参m,计算如下公式的值。
y=1-1/(2×2)+1/(3×3)-1/(4×4)+…+(-1)(m+1)/(m×m)
例如:m中的值为5,则应输出0.838611。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <conio.h>
#include <stdio.h>
double fun(int m)
double y=1.0;
/**********found*************/
int j=1;
int i;
for(i=2;i<=m;i++)
j=-1*j;
/****************found*******+******/
y+=1/(i*i);
return(y);
main()
int n=5;
clrscr();
printf("\n The result is %lf\n",fun(n));
参考答案:(1)错误:int j=1 正确:double j=1.0;
(2)错误:y+=1/(i*i); 正确:y+=j/(i*i);
解析:错误1:为了做后面的除法运算,j要定义为实型数,否则除得的结果将为整数。错误2:题中公式是加减相间的运算,通过来实现。