| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 917 人关注过本帖
标题:关于循环的疑问
只看楼主 加入收藏
yln50646
Rank: 2
等 级:论坛游民
帖 子:5
专家分:22
注 册:2015-6-3
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:3 
关于循环的疑问
最近看到一个题目:爱婴斯坦阶梯问题:
开始写代码是这样的:
/*原始题目是:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;
若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;
只有每步上7阶,最后刚好一阶也不剩。*/
#include<stdio.h>
int main()
{
int i=1, num;
    while (i<1000){
        num = 7*i;
        if( (num%6==5&&num%5==4&&num%3==2&&num%2==1)==1)
            printf("台阶步数为%d\n",num);
        else i++;
        
    };
    printf("计算结束\n");
    return 0;
}
程序进入无限循环!!没想明白是怎么回事?
后来又更改了下,程序如下:
/*原始题目是:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;
若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;
只有每步上7阶,最后刚好一阶也不剩。*/
#include<stdio.h>
int main()
{
int i=1, num;
    while (i<1000){
        num = 7*i;
        if( (num%6==5&&num%5==4&&num%3==2&&num%2==1)==1)
            printf("台阶步数为%d\n",num);
        else ;
        i++;
    };
    printf("计算结束\n");
    return 0;
}
这样就可以算出来结果了。
初学C不久,有没有前辈给解释下!在此谢谢了!!
2016-01-07 20:42
ms268el8
Rank: 4
等 级:业余侠客
威 望:1
帖 子:84
专家分:299
注 册:2015-11-30
收藏
得分:3 
else是前面的if條件為假時執行,條件為真時則不執行。
所以if( (num%6==5&&num%5==4&&num%3==2&&num%2==1)==1)
這條件若為真時,else的i++不會執行,而此時i的值可能仍符合前面while的條件,即i<1000。所以迴圈仍會繼續執行,但i值不變。造成無限迴圈的情況
2016-01-07 23:28
autumnyellow
Rank: 2
等 级:论坛游民
帖 子:72
专家分:75
注 册:2015-4-14
收藏
得分:2 
#include<stdio.h>
int main()
{
int i=1, num;
    while (i<1000)
   {
        num = 7*i;
        if( (num%6==5&&num%5==4&&num%3==2&&num%2==1)==1)
            printf("台阶步数为%d\n",num);
      //else不用就可以终止循环
        i++;
    }//;不要加
    printf("计算结束\n");
    return 0;
}
2016-01-08 00:01
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <stdio.h>

int main( void )
{
    // 中国剩余定理    y=5*[6*(7*x+3)+5] + 4,化简得 y=210*x+119
    for( int y=119; y<1000; y+=210 )
        printf( "%d\n", y );
    return 0;
}
2016-01-08 09:51
快速回复:关于循环的疑问
数据加载中...
 
   



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

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