填空题 下列给定程序中,函数proc()的功能是:根据整型形参n的值,计算如下公式的值。
t=1-1/(2*2)-1/(3*3)-…-1/(n*n)
例如,当n=7时,t=0.488203。
请修改函数proc()中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
double proc(int n)
{ double y=1.0;
int i;
//****found****
for(i=2;i<n;i++)
//****found****
y-=1/(i*i);
return(y);
}
void main()
{ int n=7;
system("CLS");
printf("/nThe result is%1f/n",proc(n));
}
【正确答案】
【答案解析】错误:for(i=2;i<n;i++)
正确:for(j=2;i<=n;i++)
错误:y-=1/(i*i);
正确:y-=1.0/(i*i); [解析] 根据题目中所给公式t=1-1/(2×2)-1/(3×3)-…-1/(n×n),可知需要循环至i=n,因此,“for(i=2;i<n;i++)”应改为“for(i=2;i<=n;i++)”;根据C语言中的语法规则,整数与整数相除结果仍为整数,要得到浮点数在分数中,分子或分母最少有一个是浮点数,因此,“y-=1/(i*i);”应改为“y-=1.0/(i*i);”。