有以下程序: main() { int a=1,b; for(b=1:b<=10;b++) { if(a>=8)break; if(a%2==1){a+=5;continue;} a-=3: }

admin2011-06-13  33

问题 有以下程序:    main()    {    int a=1,b;    for(b=1:b<=10;b++)    {    if(a>=8)break;    if(a%2==1){a+=5;continue;}    a-=3:    }    printf("%d\n",B);    }    程序运行后的输出结果是(       )。

选项 A、3
B、4
C、5
D、6

答案B

解析 本题是考查手工模拟执行程序的能力。a初值是1,循环开始时b值为1,由于a>=8为假,不执行break,但a%2==1为真,执行a+=5,a值变为6,再执行continue跳过不执行a-=3语句,而立即开始下一次循环。这时b值为2,由于a值为6,a>=8仍为假,不执行break,但a%2==1为假,不执行复合语句“{a+=5;continue;}”而执行a-=3,a值变为3。再开始下一次循环,这时b值为3。由于a值为3,a>=8仍为假,不执行break,但a%2==1为真,执行a+=5,a值变为8,再执行continue跳过不执行a-=3语句,而立即开始下一次循环。这时b值为4。由于a值为8,a>=8为真,执行break,停止for循环。此时输出的b值应为4。
转载请注明原文地址:https://kaotiyun.com/show/pjPp777K
0

最新回复(0)