求问C语言的一道题,急求!!!
#include<stdio.h>main(){longinti=1;doublePI=0;while(1/(2*i-1)>=1e-7){if(i%2!=0)PI=PI+...
#include <stdio.h>
main()
{
long int i=1;
double PI=0;
while(1/(2*i-1)>=1e-7)
{
if(i%2!=0)
PI=PI+1/(2*i-1);
else
PI=PI-1/(2*i-1);
i++;
}
printf("PI=%.25lf",PI*4);
getch();
}
上面是我的程序,我知道是这句 PI=PI+1/(2*i-1);
else
PI=PI-1/(2*i-1); 出的问题,但是不知道问什么,一定要有详细解释啊~ 展开
main()
{
long int i=1;
double PI=0;
while(1/(2*i-1)>=1e-7)
{
if(i%2!=0)
PI=PI+1/(2*i-1);
else
PI=PI-1/(2*i-1);
i++;
}
printf("PI=%.25lf",PI*4);
getch();
}
上面是我的程序,我知道是这句 PI=PI+1/(2*i-1);
else
PI=PI-1/(2*i-1); 出的问题,但是不知道问什么,一定要有详细解释啊~ 展开
5个回答
展开全部
你的程序1是整型,做除法以后得到的是整型。比如1/2=0.而1.0/2=0.5,所以你把1改为1.0就对了。程序如下,错误处以标志:
main()
{
long int i=1;
double PI=0;
while(1.0/(2*i-1)>=1e-7) //
{
if(i%2!=0)
PI=PI+1.0/(2*i-1);//
else
PI=PI-1.0/(2*i-1); //
i++;
}
printf("PI=%.25lf",PI*4);
getch();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#include<ctype.h>
main()
{
long int i=1;
double PI=0;
while(1.0/(2*i-1)>=1e-7) //如果这里不是1.0的话那么在i=2之后1.0/(2*i-1)等于0了,楼主可能
//这个不理解在C语言中/代表的是整除的意思,比如说1/2,1/3 我们
//理解为0.5,实际上只取了整数部分,所以要想得到0.5就得让其为
//浮点表示方式1.0就ok了
{
if(i%2!=0)
PI=PI+1.0/(2*i-1); //同理
else
PI=PI-1.0/(2*i-1); //同理
i++;
}
printf("PI=%.25lf",PI*4);
getchar();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
PI=PI-1/(2*i-1); 中 (2*i-1) 可能为 0 ; 这样自然就错了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-19
展开全部
你这个是什么错误啊?你这个程序没法运行,我给main()前面加了int后可以运行啊??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询