改错题
1. 下列给定程序中,函数proc()的功能是:根据整型参数m,计算如下公式的值:
y=1/(100100)+1/(200200)+1/(300300)+...+1/(mm)
例如,若m=4000,则应输出0.000162。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序: #include<stdlib.h>
#include<coriio.h>
#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",pmc(n));
}
【正确答案】(1)错误:proc(int m)
正确:double proc(int m)
(2)错误:for(i=100,i<=m,1+=100)
正确:for(i=100;1<=m;1+=100)
【答案解析】 由主函数中的函数调用和函数proc()的返回值可知,函数proc()的返回值类型为double型,因此,“proc(int m)”应改为“double proc(int m)”;根据C语言的语法规则,for循环的3个条件之间由分号间隔,因此,“for(i=100,i<=m,1+=100)”应改为“for(i=100;i<=m;1+=100)”。