C语言程序运行后显示0.0000000,没有错误,求大神指教

#include"stdio.h"
main()
{
int p=1;
float pi=0,i=1;
while i>=1e-6;
{
pi=pi+p*i;
i=i/(i+2);
p=-p;
}
pi=pi/4;
printf("%f",pi);
}
不是while的问题,上面我打错了,是while(i>=1e-6),各位不好意思,
另外问题是用pi/4=1-1/3+1/5-1/7+....公式求圆周率的近似值

第1个回答  2012-06-18
main()
{
int p=1;
float pi=0,i=1,k=1;
while ( i>=1e-6)
{
pi=pi+p*i;
i = 1/(k+2);
p=-p;
k+=2;
}
pi=pi*4;
printf("%f",pi);
}
看看这样对不,不过只能求近似值
1 while 后面你加了 ; 这样就不会进入循环
2 根据你的公式 pi = pi*4
第2个回答  2012-06-18
while i>=1e-6;
改为while( i>=1e-6)
即去掉;加上()追问

不是while的问题,上面我打错了,是while(i>=1e-6)

追答

没有别的语法问题了,弱弱问一句,是不是程序算法错了
这程序是要计算什么的?

#include
main()
{
int p=1;
float pi=0,i=1,t=1;
while (t>=1e-6)
{
pi=pi+p*t;
t=1/(++i,++i);
p=-p;
}
pi=pi*4; //乘
printf("%f",pi);
getchar();
}

本回答被提问者采纳
第3个回答  2012-06-18
while i>=1e-6;
这里不行吧?
while (i>=1e-6)追问

奥,不是这里,我打的时候掉了,不好意思

追答

去掉分号啊,那是空语句,会使后面花括号你的代码没有循环执行了。
而且空语句下,会导致死循环,i始终>=1e-6

改后,结果是0.191125啊

关键你是求什么啊?若是你的逻辑都错了,结果自然不对。

追问

问题是用pi/4=1-1/3+1/5-1/7+....公式求圆周率的近似值

追答

#include"stdio.h"
main()
{
int p=-1;
double pi=1,i=1,t;
while(1)
{
t=1/(i+2);
if(t<1e-6) break;
pi=pi+p*t;
i+=2;
p=-p;
}
pi=pi*4;
printf("%lf",pi);
getchar();
}

pi初值1,第一项求-1/3,符号p=-1,i=1
最后pi要乘以4

第4个回答  2012-06-18
i=i/(i+2)错了
是i=1/(i+2)

C语言程序运行后显示0.0000000,没有错误,求大神指教
1 while 后面你加了 ; 这样就不会进入循环 2 根据你的公式 pi = pi*4

...是int,输出的是float,为什么执行时候结果就是0.0000000
C语言中声明的变量类型和printf输出类型没有直接联系,可以相互转换的。比如说,定义 char a='a'; printf("%d",a);输出的就是a的ASCII码值,printf("%c",a);输出的就是字符a

c语言基础(初学) 看看这个程序,分析一下,为什么会出现这个结果,谢谢
至于用%d格式输出b也是0的情况,就是是编译器差异了,你的编译器可能是把int 1换成float,然后把转换后的float逻辑上截断赋值给b,那就是0了,我用vs2010,%d的输出是1,所以要尽量避免使用此类代码

C语言的输出格式?
截图是在C-Free5.0环境下的运行结果。因为b是float类型,在%.2f格式下输出的是0.50,而a是int类型,小数部分被截除,整数部分为零,所以输出为0。要说明的是,对于赋值运算符=,先进行运算符“=“右边部分的运算,然后将表达式的运算结果赋给“=”左边的变量。

C语言中怎么负根显示错误啊
int main(){ float delt;float solution[3][2];float a,b,c;int i,j,k;FILE *f;if((f=fopen("D:\\\\dd.txt","w"))==NULL){ printf("Cannot open file!\\n");return 1;} for(i=0;i<3;i++){ do\/\/do循环测试方程是否有两个不等的实数根,没有重新输入系数 { printf("请...

C语言:这么求pi(三角形的pai)为什么显示的是错误的呢?跪求~
0;double x,y;double m=0.0;int i;srand( time ( NULL ) );for(i=0;i<n;i++){ x = (rand() * 1.0 \/ RAND_MAX );y = (rand() * 1.0 \/ RAND_MAX );if(x*x+y*y<=1)m++;} pi=4*m\/n;return pi;} 你在试一次?我在我的电脑上试了,没有出现0的情况 ...

c语言求5个数平方后的和
include <stdio.h> void main(){ double a,b,c,d,e;scanf("%f%f%f",&a,&b,&c,&d,&e);printf("%f\\n",a*a+b*b+c*c+d*d+e*e);} 注意输入的时候 要使用分隔符 更scanf里面双引号里面的格式一致,例如1 2 3 4 5

用C语言求cosX的值
x -- 用弧度值输入 精度 -- 1E-07 泰勒公式:cos(x) = 1 - x^2\/2! + x^4\/4! - x^6\/6! ...程序:include<stdio.h> include<math.h> void main(){ double x,term,sum,x2;int i;printf("input x in HuDu\\n");scanf("%lf",&x);x2 = x * x;sum = 1.0;term =...

相似回答