改错题
1. 下列给定程序中,函数proc()的功能是求S的值。
S=(2
2/(1*3))*(4
2/(3*5))*(6
2/(5*7))
*...*(2n)
2/((2n-1)*(2n+1))
例如,当n为100时,函数的值应为1.566893。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序: #include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
//****found****
proc(int n)
{
int n;float sum, w,p,q;
n=1;
sum=1.0;
while(n<=n)
{
w=2.0*n;
p=w-1.0;
q=w+1.0;
sum=sum*w*w/p/q;
n++;
}
//****found****
return sum
}
void main()
{
system("CLS");
printf("%f\n",proc(100));
}
【正确答案】(1)错误:proc(int n)
正确:double proc(int k)
(2)错误:return sum
正确:return sum;
【答案解析】 由主函数中的函数调用及函数proc()中的return语句可知,函数proc()的返回值类型应为double型,因此,“proc(int k)”前面应加上double;根据C语言的语法规则,每一条语句都必须以分号结束,因此,语句“return s”后应加上分号。