搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 真的不服。
标题:
真的不服。
只看楼主
莹幸儿
等 级:
新手上路
帖 子:62
专家分:0
注 册:2018-3-23
结帖率:
22.22%
楼主
已结贴
√
问题点数:20 回复次数:12
真的不服。
#include<stdio.h>
main()
{
int x,y;
for(x=y=1;x<=100;x++)
{
if(y>=10)
break;
if(y%3==1)
{
y=y+3;
continue;
}
}
printf("%d\n",x);//bufu,5
}
这段逻辑我是真的不懂
我觉就应该输出x=5
结果是4.为神马。
最后y=10,break推出了循环,表达是3不应该再执行一次么?
搜索更多相关主题的帖子:
break
输出
结果
神马
循环
2018-04-06 10:24
李晨经纪人
等 级:
蝙蝠侠
威 望:
6
帖 子:175
专家分:848
注 册:2018-2-14
第
2
楼
得分:2
break就跳出循环了,既然跳出循环了怎么还会执行for循环的第三个表达式?
2018-04-06 11:56
莹幸儿
等 级:
新手上路
帖 子:62
专家分:0
注 册:2018-3-23
第
3
楼
得分:0
回复 2楼 李晨经纪人
意思就是,如果把for 的第三个表达是拿出来就应该放在for子语句的最后,再break后面,
执行了break跳出循环则跳过了x++
2018-04-06 22:07
吹水佬
等 级:
版主
威 望:
432
帖 子:10064
专家分:41463
注 册:2014-5-20
第
4
楼
得分:4
if(y%3==1)
{
y=y+3;
continue;
}
看似这几句可以直接改为:
y=y+3;
continue;
2018-04-07 05:40
莹幸儿
等 级:
新手上路
帖 子:62
专家分:0
注 册:2018-3-23
第
5
楼
得分:0
回复 4楼 吹水佬
这和我的问题好像没什么关系
2018-04-08 19:32
螃蟹爱吃小鱼
等 级:
论坛游侠
威 望:
2
帖 子:51
专家分:145
注 册:2018-3-6
第
6
楼
得分:4
我们以x<=100为结点,第一次判断是y=1,x=1,第二次时y=4,x=2,第三次时y=7,x=3,第四次时y=10,x=4,第四次后因为y>=10,所以终止循环,x=4
2018-04-08 20:23
吹水佬
等 级:
版主
威 望:
432
帖 子:10064
专家分:41463
注 册:2014-5-20
第
7
楼
得分:4
以下是引用
莹幸儿
在2018-4-8 19:32:38的发言:
这和我的问题好像没什么关系
y=1, y=y+3, y%3==1
代码就可简化为:
#include<stdio.h>
main()
{
int x,y;
for(x=y=1;x<=100 && y<10; x++,y+=3);
printf("%d\n",x);
}
这样是否更容易看出问题所在了
2018-04-08 20:42
莹幸儿
等 级:
新手上路
帖 子:62
专家分:0
注 册:2018-3-23
第
8
楼
得分:0
回复 6楼 螃蟹爱吃小鱼
就是改循环中如果执行break就不执行表达式3
2018-04-09 18:15
莹幸儿
等 级:
新手上路
帖 子:62
专家分:0
注 册:2018-3-23
第
9
楼
得分:0
回复 7楼 吹水佬
就是,若表达式2不成了则不执行表达式3
2018-04-09 18:17
螃蟹爱吃小鱼
等 级:
论坛游侠
威 望:
2
帖 子:51
专家分:145
注 册:2018-3-6
第
10
楼
得分:2
回复 8楼 莹幸儿
执行break就直接跳出循环了,break后面的不执行
2018-04-09 19:10
13
1/2页
1
2
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-485790-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 1.226127 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved