有以下程序
#include <stdio.h>
main()
{int a=1,b=2;
for(;a<8;a++) {b+=a;a+=2;}
printf(“%d,%d\n”,a,b);
}程序运行后的输出结果是(D)
A)9,18 B)8,11 C)7,11 D)10,14
a=1
b+=a >>b= 3, a+=2, a =3, a++ >>a=4,
a=4
b+=a >>b= 7, a+=2, a =6, a++ >>a=7
a=7
b+=a >>b= 14, a+=2, a =9, a++ >>a=10
for(;a<8;a++) {b+=a;a+=2;}等价于for(;a<8;) {b+=a;a+=3;}
b和a的值变化如下
b a
2 1
3 4
7 7
14 10
第一次进循环的时候,a=1,b=2,执行循环里的步骤为b=3,a=3,第一次循环结束a++,a变成4
第二次循环的时候,a=4,b=3,循环内b=7,a=6,循环结束a=7
第三次循环时,a=7,b=7,循环内b=14,a=9,循环结束a=10
a=10不满足进入循环条件,所以跳出循环
每次运算后,a还要自加1
(a,b)=(1,2)>(4,3)>(7,7)>(10,14)
第一轮循环
b=2+1 3
a=1+2 3循环结束因a++变为4
2轮
b=3+4 7
a=4+2 6循环结束为7
3轮
b=7+7 14
a=7+2 9循环结束加1为10
a=10,b=14