向大家请教一道计算机等级考试C语言题

来源:百度知道 编辑:UC知道 时间:2024/05/22 15:31:32
以下程序的输出结果是_。
#include<stdio.h>
main()
{ int i=0,a=0;
while(i<20)
{for(;;)
{if((i%10)==0)break;
else i--;
}
i+=11;a+=i;
}
printf("% d\n",a);
}
答案:32。为什么?请给详解,谢谢!

在这段程序中,for的条件可以看成for(;i<20;)
i的初值是0,当第一次执行for循环时i能够被10整除,结束for循环,改执行i+=11;a+=i;此时i=11 < 20;a=11.再次执行for循环,i=11,不能被10整除,执行i--;i=10时i能够被10整除,结束for循环,改执行i+=11;a+=i;此时i=21 < 20;a=10 +21=32