关于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);
}
最后结果是多少啊 ???
----------------解决方案--------------------------------------------------------
总体是自上而下读,遇到循环等可以归纳计算或者单步跟踪
结果是4
----------------解决方案--------------------------------------------------------
谢谢! 还有问题啊for的循环体是
{if(a>=8) break;
if(a%2==1)
{a+=5;continue;}
a-=3;
}
么?有没有后面的 printf("%d\n",b);这一部分啊!
----------------解决方案--------------------------------------------------------
哦,错了不是循环体 ,不知道叫什么
----------------解决方案--------------------------------------------------------
没有,因为不在同级的{}里
----------------解决方案--------------------------------------------------------
哦,又知道了 按大哥的答案 我算一遍 看对不对哦 !开始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编辑过]
----------------解决方案--------------------------------------------------------
就是说break跳出后下面不是还有个a-=3么? 还是说只要遇到{。。。。break;{。。。}。。。。。{。。}}就去执行第一层外面的啊
----------------解决方案--------------------------------------------------------
我的c还刚开始学,我相信运行结果b=4,a=8;最后一个a-=3;不执行。
----------------解决方案--------------------------------------------------------
执行结果a=8,最后一个a-=3;不执行。
----------------解决方案--------------------------------------------------------
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编辑过]
----------------解决方案--------------------------------------------------------