问答题
1. 请编写一个函数proc(),它的功能是:根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代)。
π/2=1+1/3+1*2/(3*5)+1*2*3/(3*5*7)+1*2*3*4/(3*5*7*9)+…+1*2*3*…*n/(3*5*7*…*(2n+1))
程序运行后,如果输入精度0.0005,则程序输出“3.140578”。
注意:部分源程序如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
#include<math.h>
double proc(double eps)
{
}
void main()
{
double s;
printf("\nPlease enter a precision:");
scanf("%1f",&s);
printf("\nPi=%1f\n",proc(s));
}
【正确答案】double proc(double eps)
{
double s,t;int n=1;
s=0.0;
t=1;
while(t>=eps)
{ s+=t;
t=t*n/(2*n+1);
n++;
}
return(2*s);
}
【答案解析】 应定义一个变量表示其和,一个变量表示其分数,由题目可知循环结束的标志为分数小于eps,所以,其为循环结束的条件,根据公式的变化规律,可求得s,最后把2*s返回给主函数。