main(){ int i, j, k=0;{}for(i=10,j=9;i<13;i++)

main()
{ int i, j, k=0;{}
for(i=10,j=9;i<13;i++)
while (j++<i)
k+=j;
printf("%d",k);

}为啥是10不是33详细点过程

#include <stdio.h>

int main(int argc, char const *argv[])
{
int i, j, k=0;
for(i=10,j=9;i<13;i++)
while (j++<i)
k+=j;
printf("%d",k);
}
/*
初始化i为10,j为9.
执行j<i(9<10)为真  j++,j为10,k为10
执行j<i(10<10)为假  j++,j为11,k为10

执行i++,i为11,i<13为真
执行j<i(11<11)为假  j++,j为12,k为10

执行i++,i为12,i<13为真
执行j<i(12<12)为假  j++,j为13,k为10

执行i++,i为13,i<13为假
执行j<i(13<13)为假  j++,j为14,k为10

打印k,为10
*/

追问

是不是因为这个是for和 while 的循环嵌套,他首先要执行完while的循环才可以返回i++接着执行for循环

追答

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-02-10
这程序先要注意2个点:
1.这是一个for循环嵌套whiIe的2重循环;
2.j++<i表示变量j先和i比较,然后j增1;
程序执行:
第1次for循环: i=10,j=9,i<13
_1.1 while(j++<i): 因j<i,j增1为10,k=k+j=10;
_1.2 while(j++<i): 因j=i,j增1为11,退出while;
第2次for循环: i=11,j=11,i<13
_2.1 while(j++<i): 因 j=i,j增1为12,退出while;
第3次for循环时i=12,j=12,i<13
_3.1 while(j++<i): 因 j=i,j增1为13,退出while;
第4次for循环时i=13,不再小于13,退出for。
打印k值,k=10
相似回答