填空题
下列给定程序中,函数proc()的功能是:根据整型参数m,计算如下公式的值:
y=1/(100100)+1/(200200)+1/(300300)+…+1/(mm)
例如,若m=4000,则应输出0.000162。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdlib.h>
#include<conio.11>
#include<stdio.h>
//****found****
proc(int m)
{
double y=0,d;
int i;
//****found****
for(i=100,i<=m,i+=100)
{
d=(double)i*(double)i;
y+=1.0/d;
}
return(y);
}
void main()
{ int n=4000;
system("CLS");
printf("/nThe result is%1f/n",proc(n));
}
【正确答案】
【答案解析】错误:proc(int m)
正确:double proc(int m)
错误:for(i=100,i<=m,i+=100)
正确:for(i=100;i<=m;i+=100)
[解析] 由主函数中的函数调用和函数proc()的返回值可知,函数proc()的返回值类型为double型数据。因此,“proc(int m)”应改为“double proc(int m)”;根据C语言的语法规则,for循环的3个条件之间为分号间隔,因此,“for(i=100,i<=m,i+=100)”应改为“for(i=100;i<=m;i+=100)”。