填空题 下列给定程序中,函数proc()的功能是根据整型形参n,计算如下公式的值:
y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(nn)
例如,n中的值为10,则应输出0.817962。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
double proc(int n)
{
double y=1.0;
//****found****
int j=1;
int i;
for(i=2;i<=n;i++)
{
j=-1*j;//****found****
y+=1/(i*i);
}
return(y);
}
void main()
{
int n=10;
system("CLS");
printf("/nThe result is%lf/n",proc(n));
}
【正确答案】
【答案解析】错误:int j=1;
正确:double j=1.0;
错误:y+=1/(i*i);
正确:y+=j/(i*i); [解析] 由函数proc()可知,变量j的作用是控制每一项符号的变化,并且作为运算的分子,应改为double型变量。因此,“int j=1;”应改为“double j=1.0;”。变量y中存放多项式的值,多项式中的每一项符号由变量j决定。因此,“y+=1/(i*i);”应改为“y+=j/(i*i);”。