main() { i=1,s=3; do { s+=i++; if (s%7==0) continue; else ++i; }while(s<15)

printf(&quot;%d,%d&quot;,s,i);} 为何结果为17 和8 求详解
2025-02-03 04:39:32
推荐回答(1个)
回答1:

s+=i++;
这句话会先把i的值加给s,然后i再自加(就是+1)。
(i++和++i是不一样的,i++返回的是i,++i返回的是i+1)
我们来跟着程序做
首先
1. i=1 s=3
s+=1
s=4
i=2
s不是7的倍数,执行++i,i=3
2. s+=3,s=7,i=4
s为7的倍数,执行continue
3. s+=4,s=11 i=5
s不是7的倍数,执行++i,i=6
4. s+=6,s=17 i=7
s不是7的倍数,执行++i,i=8
判断s<15不成立(s=17),结束循环
输出, s为17,i为8