请C语言高手帮忙分析一下这个循环,为什么我算出来的n=1,k=4,详细点,谢谢。
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 , 结果是正确的
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
展开全部
因为n初值为0,进入循环if(n%2==0)成立直接就break了,所以n和k的值都保持初值不变,分别为0和4。
追问
是不是第一次循环n=0这个初始值不需要增值?循环完一次再增值加一?
追答
for循环
for(statement1; statement2; statement3)
{
statement4;
}
的执行过程是:
①首次进入循环时,执行statement1
②判断statement2是否成立
③如果成立,执行循环体中的statement4;否则,退出循环
④如果statement4没有导致退出循环,执行statement3
⑤完成本次循环,回到②开始下一次循环
重复②-⑤,直到整个循环退出。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询