c++第十七题。求详细过程

如题所述

if((k+m)%s) //意思是只要得数不为0,就跳过这次循环体,重新开始
continue;

观察k m 和s的初始值, k+m=5 5%s得数为0。 也就是if条件为假,不执行continue;

而是执行++m;和k--; 注意每次循环都是m+1和k-1,所以循环完后k+m始终都为5,
也就是说无论循环多少次都不会执行continue;
循环的跳出条件是k为0(假),

所以
第一次循环:k=2,m=3; //循环完后k=1,m=4,然后判断k不为0
第二次循环:k=1,m=4 //循环完后k=0,m=5,然后判断k为0,跳出循环体

所以最后k=0,m=5,s一直没有改变
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-10
过程如下:
第一次循环 k=2,m=3,k+m=5,(k+m)%s = 0,跳过continue,m=4,k=1
第二次循环 k = 1,m=4,k+m=5,(k+m)%s = 0,跳过continue,m = 5,k = 0退出while循环
此时 k =0,m =5,s = 5,选D追问

为什么等于0就要跳过continue

追答

因为if(表达式) 语句1
这里表达式如果为0,就不执行语句1了呀,这是if语句的语法。

第2个回答  2015-06-10
break是结束整个循环体,continue是结束单次循环

这个程序表达:当k+m的值正好不能被s整除时,退出本次循环;如果不满足,则执行++m和k--,所以一直都是不满足的,直到k减到为0时,整个while循环退出,这个时候k减了两次,m就加了两次,所以k为0,m为5,s不变。
第3个回答  2015-06-10
写了两页纸,要就速递给你。追问

拍照可以吗?

追答

太长了。