#include main() { int i,b,k=0; for(i=1;i<=5;i++) { b=i%2;while(b-->=0)k++;} printf("%d,%d",k,b); }
b= 1%2 ? b=1; 循环 b>=0? k++ b-- b=0 k=1;循环 b>=0? b-- b=-1 k=2 循环 b>=0? b=-1不符合,b-- b=-2;
b= 2%2 ? b=0; b>=0? k++ b-- b=-1 k=3; 循环 b>=0? b=-1不符合,b-- b=-2;
b=3%2 k+=2; k=5
b=4%2 k+=1; k=6
b=5%2 k+=2; k=8
一些解题思路我写在了代码注释里,题主可以看一下,虽然题目已经被采纳了,但是这个点确实很多人有纠结写出来好一点
#include "stdio.h"
void main()
{
int i,b,k=0;
for(i=1;i<=5;i++)
{
//i%2 i的值与2取余 若i为1 则式子为 b=1%2,则b为1
b=i%2;
printf("第%d次,k=%d,b=%d \n",i,k,b);
//主要是对于b--的定义
//在计算机中,有--b和b--
//b--的顺序是 先做判断 再做b--
//--b的顺序是 先b-- 再做判断
//在这里就是 先用b与0去做判断 ,做完判断后在执行--
//这个--不管怎样都要执行
//句式分解
//1.whiile(b>=0)
//2.b--
//3.根据判断是否进行程序体
//4.若b>=0,则k++
//5.若b<0,则跳出
//案例解析
//第一次循环 i = 1 b通过取余后为1
//b = 1 进行while 1>=0 ;执行b--; 满足条件k++ 当前b=0,k=1
//b = 0 进行while 0>=0; 执行b--; 满足条件k++ 当前b=-1,k=2
//b = -1 进行while -1>=0; 执行b--;不满足条件 判断为false跳出 当前b=-2,k=2
//我例举一个例子 之后举一反三
while(b-->=0)
{
k++;
}
printf("第%d次,k=%d,b=%d \n",i,k,b);
}
}
效果截图
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632