填空题 下列给定程序中,proc()函数的功能是:根据形参n,计算下列公式的值:
t=1-1/2+1/3-1/4+…+(-1)(n+1)/n
例如,若输入6,则应输出0.616667。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
//****found****
int proc(int n)
{
double t=1.0,j=1.0;
int i;
//****found****
for(i=1;i<n;i++)
{j=-1*j;t+=j/i;}
return t;
}
void main()
{
int n;
system("CLS");
printf("/nPlease enter 1 integer number:");
scanf("%d",&n);
printf("/nThe result is%1f/n",proc(n));}
【正确答案】
【答案解析】错误:int proc(int n)
正确:double proc(int n)
错误:for(i=1;i<n;i++)
正确:for(i=2;j<=n;i++) [解析] 由主函数中的函数调用以及函数proc()中返回值的类型,可知函数proc()的返回值类型为double型数据。因此,“int proc(int n)”应改为“double proc(int n)”。由题目中给出的表达式可知,循环的最大值应该取到n,因此,“for(i=1;i<n;i++)”应改为“for(i=2;i<=n;i++)”。