有道c语言题请大神指点,并讲解一下运行过程,谢谢! main () {int i=0, s=0;

有道c语言题请大神指点,并讲解一下运行过程,谢谢!main(){inti=0,s=0;for(;;){if(i==3||i==5)continue;if(i==6)bre... 有道c语言题请大神指点,并讲解一下运行过程,谢谢!
main ()
{int i=0, s=0;
for( ; ;)
{
if(i==3||i==5) continue;
if(i==6)break;
i++;
s+=i;
}
printf("%d\n", s);
}
程序运行后结果是( )
A 10 B 13 C 21 D 程序进入死循环
展开
 我来答
百度网友011b3069
2013-09-13 · TA获得超过437个赞
知道小有建树答主
回答量:334
采纳率:0%
帮助的人:298万
展开全部

这题应该是考continue和break的,就这题而言选D

  1. continue是只结束本次循环,但是还是在这个大的循环里面,

    例如这个if(i==3||i==5) continue;就是如果i等于3或者i等于5的时候,只是单单的结束这次循环,也就是不执行if(i==6)break;i++;s+=i;这些在for循环里面但是在他之后的东西,但是没有完全退出这个循环再次进入for循环里面,而你的for循环里面什么都没有也就是i的值会不变,也没有终止这个大循环的条件,那么当i由0慢慢倒3的时候满足if(i==3||i==5) continue;这个条件后,就会无限循环下去。原因就是i不变了(因为不执行在他之后的i++了),又没有终止的条件。所以会是无限循环。

  2. break是结束这整个循环

    例如还是你这个程序删除if(i==3||i==5) continue;后这个程序会输出的结果是21,因为break是结束这整个for的大循环,所以他执行到i等于6的时候,就跳出了整个for循环,那么s的值就是1+2+3+4+5+6=21

ps:(知道就忽略吧)

i++是每执行一次i的值加1

s+=i就是s=s+i

追问
太给力了,你的回答完美解决了我的问题!
麦芒上的蚂蚁
2013-09-13
知道答主
回答量:21
采纳率:0%
帮助的人:16.6万
展开全部

楼主你好!

我在你的程序里加入注释你应该就能明白了

main ()
{int i=0, s=0;
for(  ;  ;)//空的for循环隐含的内容是终止循环的条件应该是在下面的循环体里
{
if(i==3||i==5) continue;//i等于3和5的时候直接进行下一次循环
if(i==6)break;//i等于6的时候终止循环
i++;//i不等于3,5,6时,i加1
s+=i;
}
printf("%d\n", s);
}

  1. i=0时i++

  2. i=1时i++

  3. i=2时i++

  4. i=3时continue跳过本次循环也就是不执行i++,这时i永远等于3导致一直循环

  5. 答案是D

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
欣CZ
2013-09-13 · 超过11用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:21.6万
展开全部
答案:D
给你把出现标记了一下,,你可以自己运行一下:

int i=0, s=0;
for( ; ;)
{
if(i==3 || i==5) //由于当i=5的时候,不能继续往下执行i++,所以i会一直等于5,陷入死循环
{
cout << "b" << endl;
continue;
}
if(i == 6)
{
cout << "c" << endl;
break;
}

i++;
s+=i;
cout << "a" << endl;
}
printf("%d\n", s);
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2013-09-13 · 超过30用户采纳过TA的回答
知道答主
回答量:180
采纳率:0%
帮助的人:95.8万
展开全部
答案选择D;
进入Main函数顺序执行语句,初始化i、s后,进入循环
i = 0;循环成立 i不等于3、5或6 不执行continue ,也不退出循环;i自增为1,s记录i的累加值也为1;
i = 1、2都满足上述条件 i自增为3,s记录i的累加值为1+2+3 = 6;
当i=3继续循环,到了if(i==3||i==5)continue;于是继续下一次循环,因为i值不变一直为3,所以程序一直循环。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
树之龙灵
2013-09-13 · 超过14用户采纳过TA的回答
知道答主
回答量:80
采纳率:0%
帮助的人:25.2万
展开全部
楼下正解。。因为无条件循环,所以在 i 的值成为3之前,i 都能自加,s 的值也能不断加 i ,当 i == 3的时候,循环体第一句条件满足,执行continue,跳出本次循环,不进行+1操作,s 的值也不会变化,当然 i 的值也不变。所以下次循环的时候 i 依然等于3,仍旧执行continue,如此下来,程序就会进入死循环。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式