C语言问题:这个程序语句可以互换吗?

来源:百度知道 编辑:UC知道 时间:2024/05/27 04:13:57
#include "stdio.h"
#include <math.h>
void main()
{ int s;
float n,t,pi;
t=1;pi=0;n=1.0;s=1;
while(fabs(t)>1e-6)
{
pi=pi+t;
s=-s;
n=n+2;
t=s/n;
}
pi=pi*4;
printf("pi=%10.6f\n",pi);
}
比如上面这个程序pi=pi+t这个语句放在循环体的最后即t=s/n后面,当然结果是错的,变化后为什么会出错呢,请问这是为什么呢?我不是无聊才这样做的,我只是有疑问,谢谢!

pi=pi+t;放在 t=s/n;之后此时t的值已经改变了

如果不考虑精度上的一点差别的话,主要问题在于最开始进入循环时候的那个t没有加到pi 里去。
如果一开始初始化成 pi = 1 那就差别很小了