C语言循环题?

#include<stdio.h>inti,j;main(){for(j=10;j>3;j--){if(j%3)j--;--j;--j;printf("%d",j);}}... #include<stdio.h>
int i,j;
main()

{
for(j=10;j>3;j--)
{
if(j%3)j--;
--j;--j;
printf("%d",j);
}
}/*答案为什么是7 4 */
展开
 我来答
北晨lpl
2020-02-24 · 个人账号,请勿打扰。
北晨lpl
采纳数:26 获赞数:61

向TA提问 私信TA
展开全部

第一次,j初值为10,进入if语句判断,if语句只要括号内的值不为0,就为真,执行j--;--j;--j;输出j值为7。

第二次,j初值为6,if判断为假,执行后续--j;--j;输出j值为4。

第三次,j初值为3,for循环不执行,程序运行结束。

最终结果为

74

追问
十分感谢!可以问下为什么第二次条件不满足,就跳过一个,后面的两个语句还执行呢
追答
j--;在if语句内,后续语句不在其中。
单语句:if(条件)语句;
多语句:if(条件){语句1;语句2;…语句n;}
雾应洪0
2020-02-24
知道答主
回答量:36
采纳率:0%
帮助的人:4.7万
展开全部
如果不是3的倍数j就减3次,是则减2次,而且每次循环减1次;
因此,j == 10 时,j减2次后就是7;进入循环,j == 7,再减3次后是4;再进入循环,j == 3,不满足循环条件,跳出循环。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2020-04-16
展开全部

答案是7 4

加 语句 观察

printf("%d %d\n",i++,j);

2次循环

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
神化无畏者
2020-02-24 · TA获得超过130个赞
知道答主
回答量:94
采纳率:61%
帮助的人:9.7万
展开全部
第一次循环时,j=10,10%3=1,那么执行j--,然后两次--j,j=7,输出j,然后执行分号后的j--,第二次也是如此,j=4,输出j,继续执行,然后j=3,于是退出循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
旅漾南门苓
2020-02-24 · TA获得超过3888个赞
知道大有可为答主
回答量:3121
采纳率:24%
帮助的人:240万
展开全部
双加号在前面的,先执行加1再执行其他运算,双加号在后的等这个算式运算结束后才执行,等于运算过程不参与。然后for的第三部分,等每次运算完花括号后才执行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式