| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1017 人关注过本帖
标题:这个程序没有错误,但是无法正常运行,怎么回事,求指点。。。
只看楼主 加入收藏
褫夺爱情
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-5-31
结帖率:0
收藏
已结贴  问题点数:6 回复次数:7 
这个程序没有错误,但是无法正常运行,怎么回事,求指点。。。
#include<stdio.h>
#include<math.h>
int main()
{
int sign=1,n;
float pi=0.0,term=1.0;
for(n=3;;n=n+2)
{
if(fabs(term)>1e-8)
pi=pi+term;
sign=-sign;
term=sign/n;
}
pi=pi*4;
printf("pi=%10.8f\n",pi);
return 0;
}


//原理就是pi/4=1-1/3+1/5-1/7......一个数学算式求pi。
搜索更多相关主题的帖子: include return 数学 
2014-05-31 21:02
kajj_0321
Rank: 2
等 级:论坛游民
帖 子:47
专家分:93
注 册:2013-10-23
收藏
得分:1 
大致看一下,for无限循环!没看程序意思

kajj->1314 努力每一天。
2014-05-31 21:51
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:1 
你的循环一定要能够控制循环条件,不然就是死循环了

我不是砖家,要努力成为砖家。
2014-05-31 23:16
lodero13
Rank: 1
等 级:新手上路
帖 子:3
专家分:4
注 册:2014-5-14
收藏
得分:1 
不如你循环条件用一个很大的值控制下吧,不然无限循环,电脑永远在纠结很后的数。如果嫌pi值不准确再把循环条件的值改大些就行啦~
2014-06-01 12:14
张小齊
Rank: 2
等 级:论坛游民
帖 子:14
专家分:46
注 册:2014-5-23
收藏
得分:1 
第一,if(fabs(term)<1e-8)
break;
第二:term=(double)sign/n;注意类型


/****多看书很有益*****
2014-06-01 16:06
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:1 
term=sign/n;


这一句以后, term=0了,到底for成为死循环,  程序永远在执行,没法输出结果.  

强制转换一下类型就可以了.

代码测试环境:  WinXP+C-Free5.0.
2014-06-01 17:18
筱鱼
Rank: 2
等 级:论坛游民
帖 子:6
专家分:20
注 册:2014-5-22
收藏
得分:1 
楼主要不这样改吧,循环条件没有总觉得不靠谱
还有注意int/int 的情况!
#include<stdio.h>
 #include<math.h>
 int main()
 {
 int sign=1,n;
 double pi=0.0,term=1.0;
 for(n=3;fabs(term)>1e-8;n=n+2)
 {
 pi=pi+term;
 sign=-sign;
 term=sign*1.0/n;
 }
 pi=pi*4;
 printf("pi=%10.8f\n",pi);
 return 0;
 }
 
2014-06-01 19:58
xsw07122269
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:34
专家分:183
注 册:2014-6-2
收藏
得分:1 
楼上正解,就算你加了循环结果也会错的。sign/n都是整数,除出来四舍五入term一直会是0的。
2014-06-02 06:44
快速回复:这个程序没有错误,但是无法正常运行,怎么回事,求指点。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014122 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved