首页 > 试题广场 >

有以下程序

[单选题]
有以下程序

#include "stdio.h"
void main() {
    int a = 1;
    int b = 2;
    for (; a < 8; a++) {
        b += a;
        a += 2;
    }
    printf("%d, %d\n", a, b);
}


程序运行后的输出结果是( )

  • 9,18
  • 8,11
  • 7,11
  • 10,14
推荐
D。考察的for循环语句,参数和循环体执行的顺序。
初始化--判断--循环体--循环后操作--判断--循环体--循环后操作……以此类推,直到判断为false。
for(;a<8;a++){ 循环体 }  初始化:a=1;b=2 
  • 第一次循环:b+=a得出b=3; a+=2得出a=3  ;  a++为4,判断条件a<8为true,继续循环。
  • 第二次循环:b=7;a=6  ; a++为7,a<8为true,继续循环。
  • 第三次循环:b=14;a=9   ,a<8为false,结束循环。但循环后for参数中的a++仍要执行得10
所以最终结果:a为10,b为14。
编辑于 2019-07-29 14:12:41 回复(0)
求大神解答,让我i参考
发表于 2019-07-26 17:35:53 回复(0)
首先先来看一下执行顺序
1.a、b申请空间并且初始化 a=1 b=2
2.进入循环->判断条件->循环体->...->判断条件->不满足退出循环
3.输出操作(此时自加操作已经完成)
易错点:循环什么时候结束不清楚
解决建议:对于循环次数较少的循环 按着顺序老老实实手写一遍即可

第一次循环
b=2,a=1)->判断a<8? 满足->(b=3,a=3)->a++ ->(b=3,a=4
第二次循环
b=3,a=4)->判断a<8? 满足->(b=7,a=6)->a++ ->(b=7,a=7
第三次循环
b=7,a=7)->判断a<8? 满足->(b=14,a=9)->a++ ->(b=14,a=10
判断是否进入第四次循环:
b=14,a=10)->判断a<8? 不满足->退出
此时a=10,b=14
输出为"10,14",因此选D
发表于 2019-07-26 22:00:51 回复(0)
我真是nt a++都看不到
发表于 2022-05-04 00:04:56 回复(0)
说实话 我一直都以为 先执行括号()里的a++,在执行b+=a;a+=2;
发表于 2019-12-29 15:21:46 回复(0)
发表于 2019-07-26 21:06:27 回复(0)
这题得在纸上画和写了,我口算,结果算错了。
发表于 2020-06-01 22:08:42 回复(0)
a+=2 中a的值会附加到for循环的判断 然后继续a++ 口算漏了a++
发表于 2023-04-25 14:01:54 回复(0)
在本次循环结束(b+=a;a+=2;)之后,才会运行a++,并进入下一次循环
发表于 2021-08-25 16:38:05 回复(0)
注意,循环里面执行a自加完2后还要自加1
发表于 2023-11-12 20:34:26 回复(0)
注意:循环条件和步进语句。
a的值在函数体改变,在步进语句中也发生改变。

当循环体中和步进语句中都有i时,注意两者均改变。
将步进语句放在最左边或最上边,防止自己忘掉步进语句。
发表于 2023-10-26 19:40:01 回复(0)
细心一点
发表于 2023-09-15 21:21:27 回复(0)
还要a++
发表于 2022-11-05 21:00:09 回复(0)
注意a++
发表于 2022-02-23 13:15:34 回复(0)
选D。考察的for循环语句,参数和循环体执行的顺序。 初始化--判断--循环体--循环后操作--判断--循环体--循环后操作……以此类推,直到判断为false。 for(;a<8;a++){ 循环体 }  初始化:a=1;b=2  第一次循环:b+=a得出b=3; a+=2得出a=3  ;  a++为4,判断条件a<8为true,继续循环。 第二次循环:b=7;a=6  ; a++为7,a<8为true,继续循环。 第三次循环:b=14;a=9   ,a<8为false,结束循环。但循环后for参数中的a++仍要执行得10 所以最终结果:a为10,b为14。
发表于 2021-11-09 10:33:29 回复(0)
最好是一步一步清晰写出来
发表于 2019-11-12 15:03:28 回复(0)
D,判断,首次进入循环体,赋值后,b=3,a=3,然后执行a++,a=4;判断,第二次进入循环体b=7,a=6;执行a++,a=7;判断,第三次进入循环体赋值后b=14,a=9;执行a++,a=10;判断,退出循环体
发表于 2019-07-26 18:31:00 回复(0)