请C语言高手帮忙分析一下这个循环,为什么我算出来的n=1,k=4,详细点,谢谢。

 我来答
碧雪情天uo
2019-08-25 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:151
采纳率:33%
帮助的人:58.2万
展开全部
int k = 4 ,n;
for(n = 0 ; n<k ; n++){
// n = 0 ; n % 2 求余 == 0 也就是第一次执行 break 就退出了
// 在循环内 n = 0 ; 但是上面 n++ 已经执行了,再次调用就是 n = 1 了
if(n % 2 == 0) break;
// 上面已经退出,所以 k-- 不会执行
k--;
}
printf 结果就是 n = 1, k = 4 , 结果是正确的
追问
可是课后答案给出的n=0,k=4
GTA小鸡
高粉答主

2019-08-25 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
因为n初值为0,进入循环if(n%2==0)成立直接就break了,所以n和k的值都保持初值不变,分别为0和4。
追问
是不是第一次循环n=0这个初始值不需要增值?循环完一次再增值加一?
追答
for循环
for(statement1; statement2; statement3)
{
statement4;
}
的执行过程是:
①首次进入循环时,执行statement1
②判断statement2是否成立
③如果成立,执行循环体中的statement4;否则,退出循环
④如果statement4没有导致退出循环,执行statement3
⑤完成本次循环,回到②开始下一次循环
重复②-⑤,直到整个循环退出。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式