| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 598 人关注过本帖
标题:一道简单的编程题,不知道哪里错了,请各位帮帮帮帮忙
只看楼主 加入收藏
fayeco
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2010-7-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
一道简单的编程题,不知道哪里错了,请各位帮帮帮帮忙
小妹刚学C语言没几天,今编一程序却运行不出来,求教:

#include<stdio.h>
void main()
{
    int sign;
    float n,pi,term;

    sign=1;
    n=1.0;
    pi=0;
    term=1;

    while(1/(2*n-1)>=1e-6)
    {
        
        pi=pi+term;
        sign=(-1)*sign;
        term=sign/2*n-1;
    }

    pi=4*pi;

    printf("pi=%f\n",pi);
}
2010-07-15 14:23
godbless
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:216
专家分:950
注 册:2009-7-24
收藏
得分:10 
你的n没变过,

所以while(1/(2*n-1)>=1e-6)  死循环。
2010-07-15 14:38
猴子唱歌
Rank: 2
来 自:徐州
等 级:论坛游民
帖 子:5
专家分:10
注 册:2010-7-15
收藏
得分:10 
同意1楼,while循环体中,加一条语句n++;
另外,term=sign/(2*n-1);括号不要忘
2010-07-15 16:10
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:0 
对呀对呀,LZ你的n没有加,所以while循环中的语句跟本不能执行,就会成为所谓的“死循环”,所以要n++,让n一只加1就会满足while循环中的要求。LZ以后要注意,不要再犯同样的错误了哦

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-07-15 16:54
peace1221
Rank: 2
等 级:论坛游民
帖 子:32
专家分:35
注 册:2010-7-9
收藏
得分:0 
把void main 改成int main(void),还有2楼说的再while语句中再添加n++就好了。再者,你这程序是是不是求调和级数1/(2n-1)的前n项和?如果是的话,你应该把term=sign/2*n-1;改成term=sign/(2*n-1;才对。
2010-07-15 19:21
peace1221
Rank: 2
等 级:论坛游民
帖 子:32
专家分:35
注 册:2010-7-9
收藏
得分:0 
不好意思,刚才最后括号少了一边,楼主记得加上。
2010-07-15 19:22
快速回复:一道简单的编程题,不知道哪里错了,请各位帮帮帮帮忙
数据加载中...
 
   



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

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