| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1172 人关注过本帖
标题:关于C语言的扫描顺序问题!
只看楼主 加入收藏
小鸟黑黑
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-7-25
收藏
 问题点数:0 回复次数:10 
关于C语言的扫描顺序问题!

请各位朋友帮下忙,对一段程序应该按照什么顺序读呢!老是搞混乱啊!如下面的1段:
main()
{
int a=1,b;
for(b=1;b<=10;b++)
{
if(a>=8) break;
if(a%2==1)
{
a+=5;continue;
}
a-=3;
}
printf("%d\n",b);
}
最后结果是多少啊 ???

搜索更多相关主题的帖子: C语言 顺序 扫描 
2007-07-31 11:56
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
总体是自上而下读,遇到循环等可以归纳计算或者单步跟踪

结果是4

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-07-31 12:39
小鸟黑黑
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-7-25
收藏
得分:0 
谢谢! 还有问题啊for的循环体是
{if(a>=8) break;
if(a%2==1)
{a+=5;continue;}
a-=3;
}
么?有没有后面的 printf("%d\n",b);这一部分啊!

我讨厌别人叫我菜鸟,不过我的确很菜。。。
2007-07-31 12:51
小鸟黑黑
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-7-25
收藏
得分:0 
哦,错了不是循环体 ,不知道叫什么

我讨厌别人叫我菜鸟,不过我的确很菜。。。
2007-07-31 12:53
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
没有,因为不在同级的{}里

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-07-31 12:53
小鸟黑黑
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-7-25
收藏
得分:0 
哦,又知道了 按大哥的答案 我算一遍 看对不对哦 !开始a=1 b=1,第一行过去后不满足a>=8向下计算满足a%1==1 执行a+=5 算出a=6遇到CONTINUE 跳出本次,然后进入第1行 判断b<=10 这个时候先算b++ b=2 满足条件 再向下不满足a>=8(上面算出a=6)不满足a%2==1 然后执行 a-=3 算出a=3 ,再执行b++ 算出b=3。再回到第一行满足b<=10 向下不满足a>=8 向下满足(a%2==1)执行a+=5算出a=8 CONTINUE 跳出本次循环去 执行判断b<=10 这个时候b++算出b=4向下满足a>=8break跳出整个循环{}里面的,然后执行printf 打印输出b=4.
我对最后1个不太理解啊那个a-=3 还要不要执行啊

[此贴子已经被作者于2007-7-31 13:16:27编辑过]


我讨厌别人叫我菜鸟,不过我的确很菜。。。
2007-07-31 13:09
小鸟黑黑
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-7-25
收藏
得分:0 
就是说break跳出后下面不是还有个a-=3么? 还是说只要遇到{。。。。break;{。。。}。。。。。{。。}}就去执行第一层外面的啊

我讨厌别人叫我菜鸟,不过我的确很菜。。。
2007-07-31 13:13
perfume
Rank: 1
等 级:新手上路
帖 子:51
专家分:7
注 册:2007-7-24
收藏
得分:0 
我的c还刚开始学,我相信运行结果b=4,a=8;最后一个a-=3;不执行。

2007-07-31 16:29
perfume
Rank: 1
等 级:新手上路
帖 子:51
专家分:7
注 册:2007-7-24
收藏
得分:0 
执行结果a=8,最后一个a-=3;不执行。

2007-07-31 16:31
jianweichief
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2007-7-18
收藏
得分:0 
break;就退出包含它的所有前循环,而且不会再循环了,而continue;则不然,只是退出当前循环,再进行下一次循环。

break退出所有循环,continue只退出当前循环。

例如:

[CODE]for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
if(t[i][j]=='6')
break;
else if(t[i][j]=='7')
continue;
else
printf("skdjfskdfksl")
}[/CODE]

当t[i][j]等于6时,推出全部循环,当t[i][j]等于7时,退出当前循环,再执行j++的for循环

也就是说数组t[]中不能有6,否则退出循环,
有7时,什么也不干,其他则输出“skdjfskdfksl”

[此贴子已经被作者于2007-7-31 16:51:25编辑过]


2007-07-31 16:50
快速回复:关于C语言的扫描顺序问题!
数据加载中...
 
   



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

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