| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3657 人关注过本帖
标题:看如下代码,大家来讨论一下,continue后面第一次时还要不要先判断一下循环 ...
只看楼主 加入收藏
mxyklhh
Rank: 1
等 级:新手上路
帖 子:19
专家分:3
注 册:2016-6-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
看如下代码,大家来讨论一下,continue后面第一次时还要不要先判断一下循环条件呢?
void main()
{ int n=6;
while (n>3)
      { n--;
        if (n%2==0) continue;
        printf("%d",n);
      }
}
这是2014年4月的真题,输出结果为53,书上说continue后先判断一下循环条件,那应该只是输出5才对啊,if 4的时候n%2==0,continue;这时n为3,如果判断循环条件应该直接退出了才对吧。
搜索更多相关主题的帖子: continue 
2016-07-06 10:18
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:4 
这样写就好了

程序代码:
#include <stdio.h>
#include <stdlib.h>
void main()
{
    int n = 6;
    while (n>3)
    {
        if (n % 2 != 0)
        {
            printf("%d", n);
        }
        n--;
    }
}
2016-07-06 10:26
kenierlee
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:58
专家分:474
注 册:2015-7-28
收藏
得分:6 
---- 书上说continue后先判断一下循环条件,那应该只是输出5才对啊,if 4的时候n%2==0,continue;这时n为3,如果判断循环条件应该直接退出了才对吧。
if 4是啥?你是想说n==4的时候,n%2==0,然后continue,这时n怎么会等于3?n在if条件里面出现的值分别是是,5,4,3 有疑问请单步调试确认,不要乱猜。
2016-07-06 10:28
mxyklhh
Rank: 1
等 级:新手上路
帖 子:19
专家分:3
注 册:2016-6-30
收藏
得分:0 
回复 2楼 grmmylbs
呃,我不是要输出5的代码,只是想问问执行continue后面的第一次循环是不是不用判断循环条件
2016-07-06 10:34
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:10 
当然要判断循环条件。
是你自己没看懂程序运算。
n=6;
while (n>3)
      { n--;
当n=6时,第一次执行n--,此时n=5,输出5,
当n=5时,第一次执行n--,此时n=4,不输出,
当n=4时,第一次执行n--,此时n=3,输出3,
当n=3时结束循环
2016-07-06 10:37
mxyklhh
Rank: 1
等 级:新手上路
帖 子:19
专家分:3
注 册:2016-6-30
收藏
得分:0 
应该是我把n--的范围理解错了,我以为n--第一次运行时都是6,只有最后才是5,然后才判断
2016-07-06 10:44
mxyklhh
Rank: 1
等 级:新手上路
帖 子:19
专家分:3
注 册:2016-6-30
收藏
得分:0 
谢谢各位给小弟解惑
2016-07-06 10:47
lanke711
Rank: 9Rank: 9Rank: 9
来 自:流浪在天国之路
等 级:蜘蛛侠
威 望:7
帖 子:317
专家分:1437
注 册:2015-7-16
收藏
得分:0 
是不明白为什么会打印5和3吗?
void main()
{ int n=6;
while (n>3)
      { n--;//把n--放在这里的原因
        if (n%2==0)
            continue;
        printf("%d\n",n);
      }

如果不理解为什么,那我省略上面的WHILE。
楼主要是理解下面的代码,你就明白为什么最后会打印个3了

int n=6;
n--;
printf("%d",n);

请问这里会打印结果为什么?

它是先n--;然后再执行后面的语句。
如果还不明白,可以这样写:

int n=6;
printf("%d\n",n);//这里打印结果为6
n--;
printf("%d\n",n);//这里打印结果为5

相信楼主这样应该能明白了。

程序代码:
void main()
{ int n=6;
while (n>3)
      { n--;//把n--放在这里的原因
        if (n%2==0) 
            continue;
        printf("%d\n",n);
      }

这段代码,n=6时,接下来执行while 中的n>3成立与否,成立。。
n--;(在这条语句时,n依然为6).....
当语句执行到if()时,n已经不是6了,是5。
除2取余不为0,不执行continue。
依上计算,当n=4时,它在while里面n--,最后在if里其实的n就是为3....

另外一点,while循环中,if()判断如果除2取余为0,continue则结束本次循环,不执行下面的语句


普通人之所以普通,是因为他们普遍有一个通病,那就是认为自己永远普通。
千夫所指,我亦坚持。就算被所有人误解,我也照样守护这一切。
我们总是觉得,这些灵魂的表情,傲慢自大,目中无人,其实,真正目中无人的是我们。它们傲慢的不过是表情,而我们傲慢的却是行为!
记得,是为了忘记!
只要想着有那么一天,我就能忍受现在的每一天!
灾难并不可怕,可怕的是心中没有了希望。
你以为我在天堂,其实我正在路上。
当你觉得自己走不到终点的时候,请不要放弃。或许你的对手也是这种感觉。
2016-07-06 11:09
mxyklhh
Rank: 1
等 级:新手上路
帖 子:19
专家分:3
注 册:2016-6-30
收藏
得分:0 
回复 8楼 lanke711
谢谢您!已经明白了
2016-07-06 11:35
快速回复:看如下代码,大家来讨论一下,continue后面第一次时还要不要先判断一下 ...
数据加载中...
 
   



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

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