题目:
求圆周率pi的近似值,直到发现某一项的绝对值小于10的负6次方为止。
要求:
输出的结果总宽度占10位,其中小数部分为8位;程序中定义浮点型数据时,请定义为双精度double型。
提示:
pi/4=1-1/3+1/5-1/7+···
可得到结果的代码:
#include<stdio.h>
#include<math.h>
int main()
{
double sum=0,x=1,n=1,f=1,pi;
while(fabs(n)>=1e-6){
sum=sum+x*n;
x=-x;
f=f+2;//分母
n=1/f;//未添加系数的第n项
}
pi=sum*4;
printf("PI=%10.8f\n",pi);
return 0;
}
找到更简捷的代码:
#include<stdio.h>
#include<math.h>
int main()
{
double sum=0,x=1,f=1,n=1,pi;
while(fabs(n)>=1e-6){
sum=sum+n;
x=-x;
f=f+2;
n=x/f;//以系数为分子,f为分母得到第n项
}
pi=sum*4;
printf("PI=%10.8f\n",pi);
return 0;
}
运行结果:
PI=3.14159065
解这题时曾:
误认为if语句是循环结构,
在if语句(条件语句)中误用break。