c语言有关循环的题目

#include<stdio.h>voidmain(){inti,b,k=0;for(i=1;i<=5;i++){b=i%2;while(b-->=0)k++;}prin... #include <stdio.h>
void main ()
{
int i,b,k=0;
for (i=1;i<=5;i++)
{
b=i%2;
while(b-->=0) k++;
}
printf("%d,%d",k,b);
}
帮忙分析一下 这个程序的结果为什么是 8,-2
这个程序我编译了结果是8 -2
展开
 我来答
百度网友52aeb54
2010-04-26 · TA获得超过2995个赞
知道小有建树答主
回答量:1261
采纳率:0%
帮助的人:1146万
展开全部
上面的朋友很..无语
把人家正确的结果都改了

k=8我想应该没什么说的 很简单
就是 while(b-->=0) k++;这个循环根据b的值循环
如果你理解了每次b的值了,你就知道下面循环几次了
每次都会++
但上面还有个for循环 是5次的
每次i的值都是不同的,所以b的值也是变的

关键应该是为什么b是-2 呢
你看
当b=0的时候,和0进行比较过了再-- ,当继续k++的时候b已经是-1了
因为是后-- 所以是先比较后运算的
变成-1的时候再和0比较,比较了还要运行-- , 因为是-1所以不循环了

还不懂就hi我
bopswfn
2010-04-26 · TA获得超过3584个赞
知道小有建树答主
回答量:447
采纳率:0%
帮助的人:342万
展开全部
#include <stdio.h>
void main ()
{
int i,b,k=0;
for (i=1;i<=5;i++)
{
b=i%2;
//求i的余数
while(b-->=0) k++;
/*b--先测试b>=0是否成立,再将b--,功能就是当b为2整除(即b为偶数)将k加1,结束是k=2*/
}
//循环结束的条件是i<=5,故循环休在最后一次执行时i=5,故循环结束时b=5%2=1,忘了,还有b--,b=0
printf("%d,%d",k,b);
}

//结果应该是2,0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式