首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于循环的一个有关问题

2012-02-23 
关于循环的一个问题#include stdio.h#include math.hmain(){ints1floatn1.0,t1,pi0while(fabs(t

关于循环的一个问题
#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,
所以说肯定不一样

热点排行