| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 410 人关注过本帖
标题:有关while的问题,请高手帮忙!
只看楼主 加入收藏
huaheshang
Rank: 2
来 自:日照
等 级:论坛游民
帖 子:91
专家分:37
注 册:2010-12-7
结帖率:79.31%
收藏
已结贴  问题点数:10 回复次数:2 
有关while的问题,请高手帮忙!
编程序求出 2+4+8+16+32+…这样的数之和。如果累加数大于500时,则程序终止并输出结果。 510
#include"stdio.h"
#include"math.h"
int main()
{
    int i,sum=0,k1=2,k2;
    for(i=1;i<=50;i++)
    {
        k2=2*k1;
        sum=sum+k1;
        k1=k2;
        while(sum>500)
        
            break;
            
            
        
        }
    printf("sum=%d",sum);
    return 0;
   
   
    }为什么将while(sum>500)改为if(sum>0)结果就是正确的?请讲解!
搜索更多相关主题的帖子: return include 
2013-06-16 16:50
yss0729
Rank: 3Rank: 3
来 自:江西 九江
等 级:论坛游侠
帖 子:43
专家分:197
注 册:2013-6-8
收藏
得分:8 
while 是个循环结构体
for(;;)
{
    while(true)
        break;// 只是跳出while循环
}

因为你外面有一个for循环,当sum的值大于500的时候,循环并没有停止,所以会一直累加,sum为int类型,超出范围后程序并没有弹出异常
而是给sum返回了一个负值。
而下面这样,才是跳出for循环
for(;;)
{
if(true)
    break;
}
希望对你有帮助!
2013-06-16 17:09
youdeworld
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2009-9-3
收藏
得分:2 
2楼正解,while中的break跳出的是while这个循环,并没有跳出for循环的。
2013-06-16 17:13
快速回复:有关while的问题,请高手帮忙!
数据加载中...
 
   



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

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