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