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一直没有改变
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一直没有改变
展开全部
过程如下:
第一次循环 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
第一次循环 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语句的语法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
break是结束整个循环体,continue是结束单次循环
这个程序表达:当k+m的值正好不能被s整除时,退出本次循环;如果不满足,则执行++m和k--,所以一直都是不满足的,直到k减到为0时,整个while循环退出,这个时候k减了两次,m就加了两次,所以k为0,m为5,s不变。
这个程序表达:当k+m的值正好不能被s整除时,退出本次循环;如果不满足,则执行++m和k--,所以一直都是不满足的,直到k减到为0时,整个while循环退出,这个时候k减了两次,m就加了两次,所以k为0,m为5,s不变。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写了两页纸,要就速递给你。
追问
拍照可以吗?
追答
太长了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询