读书人

关于循环的一个有关问题

发布时间: 2012-02-23 22:01:35 作者: rapoo

关于循环的一个问题
#include <stdio.h>
#include <math.h>
main()
{
int s=1;float n=1.0,t=1,pi=0;
while(fabs(t)> 1e-6)
{
pi=pi+t;
n=n+2;
s=-s;
t=s/n;
}
pi=pi*4;
printf( "pi=%10.6f\n ",pi);
getch();
}
pi= 3.141594


#include <stdio.h>
#include <math.h>
main()
{
int s=1;
float n,t=1,pi=0;
for(n=1.0;fabs(t)> 1e-6;n+=2)
{
t=s/n;
s=-s;
pi=pi+t;
}
pi*=4;
printf( "pi=%10.6f\n ",pi);
getch();
}
pi= 3.141598
两个程序都四用一种方法求PI的 但是同一种编译器下 得到的结果为什么不一样呢?? 真郁闷...

[解决办法]
while(fabs(t)> 1e-6)
{
pi=pi+t;
n=n+2;
s=-s;
t=s/n;
}

for(n=1.0;fabs(t)> 1e-6;n+=2)
{
t=s/n;
s=-s;
pi=pi+t;
}
不同的在于你的t=s/n写的地方不一样
第一个是循环后面才进行
第二个写在前面,也就是计算完了 t=s/n后才进行的pi=pi+t运算,
所以肯定是不同的

[解决办法]
还是那个问题
pi=pi+t;
t=s/n;
s=-s;

s=-s;
pi=pi+t;
t=s/n;
运行次数是一样的,但结果肯定是不一样的
第一个先运行t=s/n,第二个先执行s=-s,
所以说肯定不一样

读书人网 >C语言

热点推荐