C++有关循环的题目

来源:百度知道 编辑:UC知道 时间:2024/06/20 03:10:06
1,求输出结果
main( )
{int i,n=0;
for(i=2;i<5;i++)
{do{if(i%3)continue;
n++} while(!i);
n++;}
printf("n=%d\n",n);}

我是个文科生,误入歧途报了C++的班,现在时一头雾水。请各位同志们不要只说答案呀~我有答案。我是想要详细的解答过程,谁让我看懂了,分就给谁。先谢谢大家了!!!

要理解这个程序,你需知道cotinue的用法,楼上的说法有误;
最外层for循环
i=2,满足i<5,执行循环体,if(i%3),由于i%3=2为真,故执行continue,跳过do循环中剩下的n++语句(这个你可以查资料,continue只是结束本次循环,然后判断循环表达式),此时n=0,然后执行while(!i)由于!i为假,故不在执行do循环,然后执行n++,n=1.
i=3,满足i<5,执行循环体,if(i%3),由于i%3=0为假,故不执行continue,直接执行n++,此时n=2,然后执行while(!i)由于!i为假,故不在执行do循环,然后执行n++,n=3.
i=4的情况跟i=2一样,n++只执行一次,n=4;
i=5,不满足i<5,跳出for循环,然后打印出n的值,n的值最终为4.

我想这个程序主要考察continue的用法。记得加分噢。

main( )
{int i,n=0;
for(i=2;i<5;i++) /*循环从2开始,每循环一次加1,到i=4结束*/
{
do/*内层循环*/
{
if(i%3)continue; /*能被3整除时,继续执行下面语句,不能整除时,回到for循环。*/
n++;/* n加1*/
}
while(!i); /*i 不等于0时,退出do循环*/
n++;/* n加1*/
}
printf("n=%d\n",n);/*输出n*/
}

i=2,i%3=2%3=2,为真,所以执行do-while语句的下一次循环,但!i为假,do-while不再执行;执行一次for的n++,现在n=1。再执行for语句的i++,新的i为3。
i=3, i%3=3%3=0,为假,所以执行n++,现在n=2;!i为假,do-while不再执行;再次执行for的n++,现在n=3。最后执行i++,i=4
i=4, 过程同i=2时:i%3=4%3=1,为真,所以执行do-while语句的下一次循环,但!i为假,do-while不