c语言求PI值,要求精确到1e-6,结果程序无法输出,求解答

[复制链接]
查看11 | 回复2 | 2011-10-31 05:18:52 | 显示全部楼层 |阅读模式
#includestdio.h#includeiostreamdoublefact(intn);doublemulti(intn);intmain(){inti;doublesum,item,eps;eps=1e-6;sum=1;item=1;for(i=1;;i){item=(fact(i)*1.0)/(multi(i)*1.0);while(itemeps)sum=sumitem;}/*调试时设置断点*/printf(\"PI=%0.5lf\\n\",sum*2);system(\"pause\");return0;}doublefact(intn){inti;doubleres;res=1;for(i=1;i=n;i)res=res*i;returnres;/*调试时设置断点*/}doublemulti(intn){inti;doubleres;res=1;for(i=1;i=n;i)res=res*(2*i1);returnres;/*调试时设置断点*/}
回复

使用道具 举报

千问 | 2011-10-31 05:18:52 | 显示全部楼层
for(i=1;;i)//此处是无条件循环,且循环体内无中止或退出循环的判断语句。{item=(fact(i)*1.0)/(multi(i)*1.0);while(itemeps)sum=sumitem;//这个是while循环体的语句}/*调试时设置断点*/也就是程序到此一直循环,不执行后续语句,因此,没有输出。主程序改成如下即可:intmain(){inti=1;doublesum,item,eps;eps=1e-6;sum=1;item=1;while(itemeps){item=(fact(i)*1.0)/(multi(i)*1.0);sum=sumitem;i;}/*调试时设置断点*/printf(\"PI=%0.6lf\\n\",sum*2);system(\"pause\");return0;}
回复

使用道具 举报

千问 | 2011-10-31 05:18:52 | 显示全部楼层
主程序改成如下即可:intmain(){inti=1;doublesum,item,eps;eps=1e-10;sum=1;item=1;while(itemeps){item=(fact(i)*1.0)/(multi(i)*1.0);sum=sumitem;i;}/*调试时设置断点*/printf(\"PI=%0.8lf\\n\",sum*2);system(\"pause\");return0;}赞同
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行