GESP C++ 一级考试(2024年)3月6月9月12月真题专项训练之C++循环结构知识选择题和判断题

C++循环结构基础知识

1. 下⾯C++代码段执⾏后的输出是()。

A.1                B.4                       C.5                D.10

【答案】 C

【考纲知识点】循环结构

【解析】本题考察 for 循环结构,循环执行了 5 次, cnt 增加了 5 ,答案选 C 。

2. 下⾯C++代码执⾏后的输出是()。

A.2                B.4                C.9                D.10

【答案】 B

【考纲知识点】循环结构

【解析】本题考察 for 循环结构,循环执行了 i=1,i=3, 共 2 次,注意 i+=2;cnt 增加了 1+3 ,答案选 B 。

3. 下⾯ C++ 代码执⾏后的输出是()。

A.3                B.4                C.6                D.7

【答案】 B

【考纲知识点】循环结构、基本运算

【解析】本题考察 while 循环结构,循环执行了 n=5,n=3,n=1 共 3 次, cnt 增加了 3 ,最开始 cnt=1 ,答案选 B 。

4. 在下列代码的横线处填写(),可以使得输出是正整数 1234 各位数字的平⽅和。

A.n/10                  B.(n/10)*(n/10)                    C.n%10                  D.(n%10)*(n%10)

【答案】 D

【考纲知识点】循环结构、基本运算

【解析】本题考察 for 循环结构,求各位数字的平方和, BD 是求的平方和, D 选项可以分别求出各位上的数字,选 D 。

5. 执 ⾏ 以下 C++ 语 ⾔ 程序后,输出结果是()。

A.1                B.0                C.120                    D. ⽆法确定

【答案】 A

【考纲知识点】循环结构、基本运算

【解析】本题考察 for 循环结构,循环推出条件 n 赋值为 0 ,循环不会执行,输出 s 原有值 1 。选 A 。

6.下面对C++代码执行后输出的描述,正确的是( )。

A.如果输⼊的N是⼩于等于2整数,第5⾏将输出0。

B.如果输⼊的N是⼤于等于2整数,第5⾏将输出N-1。

C.如果输⼊的N是⼤于等于2整数,第5⾏将输出N。

D.以上说法均不正确。

【答案】B

【考纲知识点】控制语句结构(一级)

【解析】本题考察了for循环语句。循环范围1到(N-1),i每次循环加1,循环体为cnt每次加1,所以本题正确答案为 B。

7. 在下列代码的横线处填写(),可以使得输出是 “1248” 。

A.i++                    B.i*=2                   C.i+=2                  D.i*2

【答案】 B

【考纲知识点】控制语句结构(一级)

【解析】本题考察控制语句结构中的循环结构。变量 i 的初始值是 1 ,循环条件是 i 小于等于 8 ,循环范围是从 1 到 8 ,循环体中输出 i ,得到的输出是 1248 ,规律是在前一个的基础上乘 2 ,每次 i*2 之后赋给 i ,所以本题正确答案为 B 。

8.下面C++代码执行后的输出是(  )。

A.10                     B.9                       C.3                       D.1

【答案】C

【考纲知识点】控制语句结构(一级)

【解析】本题考察for循环结构。循环范围1-9,i每次循环加3,循环体为cnt每次加1。所以本题正确答案为C。

9.下面C++代码第2行,总共被执行次数是( )。

A.10              B.19               C.20              D.21

【答案】C

【考纲知识点】控制语句结构(一级)

【解析】循环的初始条件是int i=-10,结束条件是i<10。循环变量i从-10开始逐渐增加,直到等于10时退出循环。因此,循环总共执行了20次,每次循环都会执行第2行代码,所以第2行总共被执行的次数是20次。

10、下⾯C++代码执⾏后输出是(   )。

A. 9 45                         B. 10 55                      C. 10 45                       D. 11 55

答案【C】

题目解析:题目中for循环的写法没有采用最常规的写法,但是程序逻辑是清晰的,累加的所有数字为0 1 2 3 4 5 6 7 8 9,最终变量i变为10循环结束,所以输出的结果为10和45,故正确答案为C选项

11. 下⾯C++代码执⾏后输出是( C )。

int N=0,i;

for (i = 1; i < 10; i++)

    N += 1;

cout << (N + i);

A. 54             B. 20              C. 19              D. 18

解析:循环执行9次,N 变为 9,i 变为 10,因此 N + i 为 19。正确答案是 C. 19。

12.下面C++代码执行后输出是( )。

A.55              B.45               C.10              D.9

【答案】B

【考纲知识点】循环语句(一级)

【解析】

本题考查for循环语句;题目循环语句用i进行枚举,i从0开始,i逐个枚举从0、1、2···直到9;Sum从初值0开始,循环体语句为Sum累加每次i的值,最终结果为0~9求和为45。所以本题正确答案为B。

13、执⾏下⾯C++代码后输出的cnt的值是(  )。

A. 8               B. 7             C. 4             D. 1

答案【C】

题目解析:题目最终求解的是循环次数,需要注意变量i步长为2,最大增长到6,后面循环将不再成立,所以共循环四次,故答案为C选项

14.下面C++代码执行后的输出是( )。

A. 55             B. 45              C. 10              D. 9

【答案】C

【考纲知识点】循环语句(一级)

【解析】本题考查for循环语句;题目循环语句用i控制循环,i从0开始,逐个枚举从0、1、2···直到9,一共10次循环。N初值从0开始,每次循环增加1,故循环结束后N的值为10,最后输出结果为10.所以本题正确答案为C。

15. 下⾯C++代码执⾏后输出的是( C )。

int tnt = 0;

for (i = 0; i < 100; i++)

    tnt += i % 10;

cout << tnt;

A. 4950          B. 5050          C. 450            D. 100

解析:i % 10 取 i 的个位数,循环100次,tnt 累加0到9的和,每个数字出现10次,因此 tnt 为 45 * 10 = 450。正确答案是 C. 450。

16.执行下面C++代码后输出是(  )。

A.3                B.21               C.27              D.49

【答案】B

【考纲知识点】控制语句结构(一级)

【解析】本题考察for循环语句。循环范围10-4,每次循环i减三,循环体为i的求和。i=10,9,6,cnt=21。所以本题正确答案为B 。

17. 下⾯C++代码 ⽤于求正整数的所有因数,即输出所有能整除⼀个正整数的数。如,输⼊ 10 ,则输出为 1 、 2 、 5 、 10 ;输 ⼊ 12 ,则输出为 1 、 2 、 3 、 4 、 6 、 12 ;输⼊17 ,则输出为 1 、 17 。在横线处应填⼊代码是()。

A.int i=1;i<n;i+1          B.int i=1;i<n+1;i+1              C.int i=1;i<n;i++          D.int i=1;i<n+1;i++

【答案】 D

【考纲知识点】循环结构、选择结构

【解析】本题考察 for 循环结构,求一个正整数的所有因子, 1 和 n 是数字 n 的因子,循环的终止条件 i<=n, 或者 i<n+1,B 和 D 选项符合。 B 选项中 i+1 , i 的值不能累加,会造成死循环, D 选项正确。

18.在下列代码的横线处填写( ),可以使得输出是 “147” 。

A.i%2==1                     B.i%3==1                     C.i=i+3                        D.i+3

【答案】 B

【考纲知识点】循环结构、基本运算(一级)

【解析】本题主要考察 for 循环中变量的取值,与求余运算符的使用;可以使用代入法进行排除。

  A 选项中,只有 i 为奇数,才会输出,输出结果为 1357 ,不满足题目要求。

  B 选项带入, 1 , 4 , 7 除以 4 的刚好余 1 ,输出结果为 147 ,满足题目要求。

  C 选项为赋值表达式,表达式的值为真,输出结果为 48 ,不满足要求。

  D 选项只要 i+3 的值不为 0 表达式都成立,输出结果为 12345678 ,不满足要求

 所以本题正确答案为 B 。

19.下面C++代码执行后的输出是(  )

A.11              B.10               C.5                       D.4

【答案】C

【考纲知识点】控制语句结构(一级)

【解析】本题考察while循环语句、if选择条件语句。循环范围无限制,循环体为cnt加一,N减二,if条件N=0,结束循环。模拟程序即可得出结果。

所以本题正确答案为 C。

20.下面的C++代码用于求连续输入的若干正五位数的百位数之和。例如输入 32488 25731 41232 0 ,则输出3个正五位数的百位数之和为13 。有关描述错误的是( )。

A.执行代码时如果输入23221 23453 12345 11111 0 ,则最后一行Sum的值是10

B.执行代码时如果输入2322 2345 1234 1111 0 ,程序也能运行

C.将代码标记为L6那行改为M = (M % 1000 / 100); ,同样能实现题目要求

D.将代码标记为L6那行改为M = (M % 100 / 10); ,同样能实现题目要求

【答案】D

【考纲知识点】循环语句(一级)

【解析】本题考察while循环语句和基本算术运算;选项A输入的4个五位数的百位数为2、4、3、1,其和为10,选项A描述正确;选项B输入的数据为4个四位数,程序可以正常运行,不会编译失败,选项B描述正确;选项C考虑输入五位数12345,12345 % 1000 值为345,345/100值为3,即为所需的百位数3,选项C描述正确;选项D考虑输入五位数12345,12345 % 100值为45,45 / 10值为4,不为所需百位数3,选项D描述错误。所以本题正确答案为D。

21. 执行以下 C++语言程序后,输出结果是( )。

A.63                     B.98                             C.113                           D. 无法确定

【答案】 D

【考纲知识点】变量的定义与使用(一级)

【解析】本题主要考察 C++ 程序基本概念中的变量定义规则,本题中,变量 sum的作用是累加求和,定义在主函数内,但是并没有进行初始化,无法保证其初始值为 0 ,故运行结果无法确定,所以本题正确答案为 D 。

22.下面C++代码执行后的输出是(  )。

A.90                     B.44                             C.20                            D.10

【答案】A

【考纲知识点】控制语句结构(一级)

【解析】本题考察for循环结构、if分支结构。循环范围为1-19,i每次加1,循环体为if多分支语句和cnt+=i(i的累加),如果i不是2的倍数的话,那么就会结束为本次循环,执行下次循环,如果i是3和5的倍数的话,那么就会结束循环。如果if多分支语句不满足执行cnt+=i。

注意:当i=15时会首先被i%2判断,跳出本次循环,执行下一个循环。

总结此程序实现1-19内非2的倍数的和,所以本题正确答案为A。

23.下面C++代码执行后的输出是( )。

A.0                B.7                       C.18                     D.20

【答案】D

【考纲知识点】控制语句结构(一级)

【解析】i%3表示变量i除以3的余数,如果i不能被3整除,即i%3的结果不为0,则条件为真。同样地,i%7表示变量i除以7的余数,如果i不能被7整除,即i%7的结果不为0,则条件也为真。因此,if(i%3 && i%7) 表示当i既不能被3整除也不能被7整除时,整个条件为真。因此,满足条件的数字是1、2、4、5、8,它们的总和是1 + 2 + 4 + 5 + 8 = 20。

24.下面C++代码执行后的输出是( )。

A.9#6#3#             B.9#6#3#0#                C.8#7#5#4#2#1#               D.10#8#7#5#4#2#1#

【答案】B

【考纲知识点】控制语句结构(一级)

【解析】开始时,N的初始值是10。在循环中,N每次减去1,然后检查新的N是否能被3整除。如果能被3整除,则输出N的值,后面跟着一个”#”符号,结果为9#6#3#0#。

25、下⾯的C++代码⽤于求1~N之间所有奇数之和 ,其中N为正整数 ,如果N为奇数 ,则求和时包括N。有关描述 错误的是(  )。

A.执⾏代码时如果输⼊10 ,则最后⼀⾏输出将是 11 25

B.执⾏代码时如果输⼊5,则最后⼀⾏输出将是6 9

C.将i += 1 移到if (i % 2 == 1) 前⼀⾏, 同样能实现题⽬要求

D.删除if (i % 2 == 1) ,并将i += 1 改为i += 2 , 同样可以实现题⽬要求

答案【C】

题目解析:如果输入数据10,则累加的数字是1 3 5 7 9,最终计算结果为25 A选项正确;如果输入的数据是5,则累加的数字是1 3 5最终结果为9,B选项正确;由于起点是1,所以采用步长为2的方式同样可以实现要求D选项正确;如果将条件判断和变量i自增切换位置则程序计算结果错误,故答案为C选项

26. 执行以下 C++ 语言程序后,输出结果是()。

A.210                           B.113                    C.98              D.15

【答案】 C

【考纲知识点】控制语句结构(一级)

【解析】本题考察循环结构和选择结构。循环范围是从 1 到 20 ,每次循环结束后 i++ , i 自增 1 ;循环内判断当前数是 3 或者是 5 的倍数,就将 i 累加到 sum 当中,故从 1 到 20 ,满足条件的数有 35691012151820 ,相加结果为 98 ,所以本题正确答案为 C 。

27.下面C++代码用于判断一个数是否为质数(素数),在横线处应填入代码是(  )。

A.cnt =  1                   B.cnt =  2                   C.cnt =+ 1            D.cnt += 1

【答案】D

【考纲知识点】控制语句结构(一级)

【解析】本题考察for循环语句、if选择条件语句。循环范围1-N,循环每次i加一,循环体if选择条件语句。如果N的倍数只有1和本身(cnt=2),那么就认为N为质数。循环体中if如果N除以i能整除,cnt加一。所以本题正确答案为D。

28、下⾯C++代码⽤于判断N是否为质数(只能被1和它本⾝整除的正整数) 。程序执⾏后 ,下⾯有关描述正确 的是(    )。

A.如果输⼊负整数 ,可能输出“是质数”

B.如果输⼊2,将输出“不是质数”, 因为此时循环不起作⽤

C.如果输⼊2,将输出“是质数”, 即便此时循环体没有被执⾏

D.如果将if (N >= 2) 改为if (N > 2) 将能正确判断N是否质数

答案【C】

题目解析: 如果输入的是负整数,程序进行分支判断一定是输出”不是质数“,A选项错误;如果输入的是2,flag的结果会是true,虽然循环没有执行但是最终的结果会输出”是质数“,所以C选项正确B选项错;如果将最开始的判断条件改写为>2,则不能正确判断是否为质数,这样会忽略掉质数2,故答案选择C选项

29.下面C++代码用于判断键盘输入的整数是否为质数。质数是只能被1和它本身整除的数。在横线处应填入代码是( )。

A. N % i                 B. N % i == 0                       C. N / i == 0                D. N / i

【答案】B

【考纲知识点】控制语句结构(一级)

【解析】在横线处填入代码,以判断键盘输入的整数是否为质数,应该选择选项B. N % i == 0。

这是因为质数是只能被1和它本身整除的数。因此,我们需要判断键盘输入的整数N能否被i整除,即N % i == 0。如果整除次数cnt等于2,说明N能被1和它本身整除,即为质数。

30. 下⾯C++代码执⾏后输出的是( C )。

int N=0,i;

int tnt = 0;

for (i = 5; i < 100; i+=5){

    if (i % 2 == 0)

        continue;

    tnt += 1;

    if (i >= 50)

        break;

}

cout << tnt;

A. 10             B. 9         C. 6        D. 5

解析:循环从5开始,每次加5,跳过偶数,直到超过50。因此,tnt 为 5。正确答案是 C. 6。

31、如果⼀个整数N能够表⽰为 X*X 的形式 ,那么它就是⼀个完全平⽅数 ,下⾯C++代码⽤于完成判断N是否为 ⼀个完全平⽅数 ,在横线处应填⼊的代码是(    )。

A. i == N*N                B. i*10 == N               C. i+i == N                 D. i*i == N

答案【D】

题目解析: 根据题目描述条件,应判断变量i的平方结果是否为N,四个选项中只有D选项是正确的书写格式,且符合题目要求,故答案为D选项

32.下面C++代码执行后的输出是( )。

A.5                B.4                C.2                D.0

【答案】D

【考纲知识点】循环语句(一级)、选择语句(一级)

【解析】本题考查for循环语句、if语句以及continue语句;题目循环语句用i控制,i从1开始,每次循环增加2,i逐个枚举从1、3、5···直到9。循环内判断i除以2的余数是否为1(判断i是否为奇数):如果成立,将会continue跳过本次循环之后的语句,直接进入到下一次循环;如果不成立,才会执行语句N+=1。由于i每次循环的值除以2的余数均为1,所以不会执行N+=1,因此循环结束N的值没有变化,仍为初值0。所以本题正确答案为D。

33.如果一个正整数N能够表示为X*(X+1)的形式,这里称它是一个“兄弟数”。例如,输入6,则输出“6是一个兄弟数”。下面C++代码用来判断N是否为一个“兄弟数”,在横线处应填入的代码可从i)-iv)中选择,则有几个能完成功 能?( )。

A. 1        B. 2         C. 3        D. 4

【答案】B

【考纲知识点】变量的定义与使用(一级)

【解析】本题主要考察变量的运算;考虑N为6与7的情况,首先6是“兄弟数”,7不是“兄弟数”。i)当循环变量i的值为2时即可成功判断6,N为7不会输出;ii)当循环变量i的值为3时即可成功判断6,N为7不会输出;iii)当循环变量i的值为2时即可成功判断6,但是N为7时,当i为2时会错误判断;iv)当循环变量i的值为3时即可成功判断6,但是N为7时,当i为3时会错误判断;所以i)与ii)可以成功判断。所以本题正确答案为B。

34. 下⾯的程序⽤于判断输⼊的整数N是否为能被3整除的偶数,横线处应填写代码是( D )。

int N;

cin >> N;

if(___________________)

    cout << “能被3整除的偶数” << endl;

else

    cout << “其他情形” << endl;

cout << endl;

A. (N%2)&&(N%3)         B. (N%2==0)&&(N%3)          C. (N%2)&&(N%3==0)          D. (N%2==0)&&(N%3==0)

解析:判断N是否为偶数且能被3整除,因此正确答案是 D. (N%2==0)&&(N%3==0)。

35.下面C++代码执行时输入 14+7 后,正确的输出是( )。

A.第5行代码2, 0        B.第5行代码1, 0         C.第7行代码1            D.第7行代码0

【答案】A

【考纲知识点】输入输出语句(一级)、基本运算(一级)

【解析】本题考察格式化输入输出语句以及基本算术、逻辑运算;

题目使用scanf输入,需求%d为整数格式,键盘输入14+7,程序只会读入加法字符(+)前面的整数部分14,因此P的值输入为14,满足if语句中的条件,执行if语句中的输出语句,14 % 3结果为2,14 % 7 结果为0,最终程序输出为第5行代码2, 0。所以本题正确答案为A。

36.下⾯C++代码执⾏后的输出是( C )。

int cnt;

cnt = 0;

for(int i = 1; i < 10; i++)

    cnt += i++;

cout << cnt;

cout << endl;

A. 54             B. 45              C. 25              D. 10

解析:循环中 i 每次加2,cnt 累加1, 3, 5, 7, 9,因此 cnt 为 25。正确答案是 C. 25。

37.执行下面C++代码后得到的输出是( )。

A. 190 20              B. 95 10         C. 90 19         D. 90 10

【答案】D

【考纲知识点】循环语句(一级)、变量的定义与使用(一级)

【解析】本题考查for循环语句和自增(++)运算符;题目循环中循环控制变量为i,循环语句中又执行了i++语句,考虑第1次循环:初始count值为0,i值为0,s值为0,i<20成立;进入循环体,s+=i++语句根据运算优先级可拆分为两步:先执行s+=i,再执行i++,因此s值仍为0,i值变为1,循环体结束;执行i++,count++,i的值变为2,count的值变为1。后续循环执行流程一致,最终一共进行10次循环,s值变化为0+2+4+···+18=90,count的值变化为1、2、3····、10。所以本题正确答案为D。

38.下面C++代码拟用于计算整数N的位数,比如对 123 则输出 123是3位整数 ,但代码中可能存在bug。下面 有关描述正确的是( )。

A.变量N0占用额外空间,可以去掉                                            B.代码对所有整数都能计算出正确位数

C. L11标记的代码行简单修改后可以对正整数给出正确输出        D. L11标记的代码行的输出格式有误

【答案】C

【考纲知识点】循环语句(一级)、变量的定义与使用(一级)

【解析】本题考查数字拆位原理;变量N0如果不提前存储N的初始输入,循环结束后N的值变为0,无法最后输出时展示N的初始值,选项A错误;题目程序变量类型均为int类型,如果输入超出int类型最大值则会溢出,无法计算出正确位数,选项B错误;对L11标记的代码行将N修改为N0后可以最后展示N的初始值,选项C正确;L11标记的代码行的格式没有问题,选项D错误,所以本题正确答案为C。

39. 下⾯C++代码⽤于判断输⼊的整数是否为位增数,即从⾸位到个位逐渐增⼤,是则输出1。如123是⼀个位增数。下⾯横线处应填⼊的是( D)。

int N;

int n1,n2;

cin >> N;

______________________;

while(N){

    n1 = N % 10;

    if(n1 >= n2){

        cout << 0;

        return 1;

    }

    n2 = n1, N /=10;

}

cout << 1;

cout << endl;

return 0;  

A. n2 = N%10        B. N /= 10             C. n2 = N/10, N %= 10       D. n2 = N%10, N /= 10

解析:正确答案D. n2 = N%10, N /= 10

位增数的判断要求从低位到高位逐个比较,每次取出个位 n1 = N % 10,然后判断其是否小于上一个位(n2)。

n2 = N % 10 取出当前最低位的数字,N /= 10 则去掉最低位。

40.对下面的代码,描述正确的是(  )。

A.输出 2 6 3 5 4 8 1 0 9 10 10                  B.输出 2 6 3 5 4 8 1 0 9 9

C.输出 2 6 3 5 4 8 1 0 9 10                      D.提示有编译错误

【答案】D

【考纲知识点】输入输出语句(一级)

【解析】本题考察输入输出语句函数的头文件,<iostream>是cin输入cout输出的头文件,而<stdlib.h>是提供内存管理、随机数生成、进程控制、数值转换及排序等多方面实用函数的标准头文件,所以会提示代码第8行产生编辑错误。所以本题正确答案为 D。

41.下图所示C++代码对大写字母 'A' 到 'Z' 分组,对每个字母输出所属的组号,那么输入 'C' 时将输出的组号是?( )。

A.3                       B.3 5                     C.3 5 9                  D.以上都不对

【答案】B

【考纲知识点】控制语句结构(一级)

【解析】本题考察程序模拟结果。当被测试的变量等于case中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。

当输入为'C'时,通过cin >> c;读取输入字符 “C”。

由于输入的字符不是 “q”,所以不会执行if(c == 'q') break;中的break语句。

进入switch(c)语句:

当c为 “C” 时,执行case 'C': cout << “3 “;,输出 “3 ”。但是这里没有break语句,程序会继续执行下一个case。

下一个case是case 'D': cout << “5 “; break;,所以接着会输出 “5 ”,然后遇到break语句,跳出switch语句。

因此,当输入 “C” 时,程序最终会输出 “3 5”。所以本题正确答案为B。

循环结构判断题

1.for 语句的循环体至少会执行一次。

【答案】 ×

【考纲知识点】控制语句结构(一级)

【解析】本题主要考察 for 循环结构, for 循环分四步走: 1. 执行第一个分号前的初始表达式; 2. 判断两个分号之间的循环条件表达式结果是否为真; 3. 执行循环体; 4. 执行第二个分号后的步进表达式,并回到第 2 步重新判断。其中第 2步,如果执行初始表达式后的状态循环条件表达式为假,则不会执行循环体。此时循环体一次也没有执行就结束了循环,所以本题错误。

2.do…while 语句的循环体至少会执行一次。

【答案】 √

【考纲知识点】循环结构(一级)

【解析】本题主要考察 C++ 中的 do…while 语句执行逻辑; do…while 会先执行一次循环体,然后再判别表达式。当表达式结果为 “ 真 ” 时,返回重新执行循环体,如此反复,直到表达式结果为 “ 假 ” 为止,此时循环结束。所以本题正确。

3.C++ 的循环语句 for(inti=0;i<10;i+=2) 表 ⽰ i 从 0 开始到 10 结束但不包含 10 ,间隔为 2 。

【答案】正确

【考纲知识点】循环结构

【解析】本题考察 C++ 循环知识,看 for 里面的条件, i 初始值是 0 ,每次增加 2 , i 分别是 0,2,4,6,8,10 ,到 10 退出循环。

4. 在 C++ 语 ⾔ 中, do-while 循环不可能导致死循环,但 while 有可能。

【答案】错误

【考纲知识点】循环结构

【解析】本题考察 C++ 循环知识,只要条件成立,都会导致死循环。

5. 在下 ⾯ 的 C++ 代码中,由于循环中的 continue 是 ⽆ 条件被执 ⾏ ,因此将导致死循环。

【答案】错误

【考纲知识点】循环结构

【解析】本题考察 C++ 循环知识,循环变量会增加,等于 10 的时候退出循环。

6.在下面的C++代码 while(1) continue; 中,由于循环中的 continue 是无条件被执行,因此将导致死循环。( )

【答案】√

【考纲知识点】循环结构(while循环与continue语句相关知识)

【解析】在 C++ 中,while循环的执行逻辑是先判断循环条件,若条件为真则进入循环体执行其中的代码,然后再次判断条件,如此反复,直到条件为假时退出循环。

对于代码while(1),这里的循环条件是一个常量表达式1,在 C++ 里,非零值表示真,所以这个循环条件始终为真,意味着如果没有其他干预机制,这个while循环本身就是一个无限循环,也就是死循环的一种表现形式。

而循环体中的continue语句的作用是:立即结束本次循环,直接跳转到循环条件判断处,开始下一次循环的判断。在这段代码中,因为循环条件始终为真,并且每次进入循环体执行到continue时,都会直接跳转到循环条件判断处开始下一次循环,中间没有任何能够改变循环执行状态、让循环终止的操作,所以continue语句会无条件地被反复执行,进而导致整个循环无法停止,最终形成死循环。所以题目说法正确,答案为 √。

7.任何一个 while 循环都可以转化为等价的 for 循环( )。

【答案】√

【考纲知识点】循环结构

【解析】while循环先判断条件,条件真就执行循环体,再回去判断条件,反复进行。for循环有初始化、条件判断、迭代更新这几部分,按顺序执行操作来循环。

其实只要分析while循环里控制变量的初始化、循环条件、变量更新情况,就能对应着改写成for循环。反之亦然,所以任何一个while循环都能转化为等价的for循环。

所以题目说法正确,答案为 √。

8.任何一个for循环都可以转化为等价的while循环( )。

【答案】√

【考纲知识点】控制语句结构

【解析】任何一个for循环都可以转化为等价的while循环,反之亦然。这是因为for循环和while循环都属于基本循环结构,可以实现相同的功能,只是语法不同。

9.在C++中,while可能是死循环,而for循环不可能是死循环。( )

【答案】×

【考纲知识点】控制语句结构

【解析】在C++中,无论是while循环还是for循环都有可能成为死循环,这取决于循环条件的设置以及循环体内部的逻辑。死循环的出现通常是由于循环条件设置不当或循环体内部的逻辑错误导致的,而不是循环类型本身决定的。因此,while循环和for循环都有可能成为死循环。

10.在C++,break语句用于提前终止当前层次循环,适用于while循环,但不适用于for循环。( )

【答案】×

【考纲知识点】控制语句结构

【解析】在C++中,break语句用于提前终止当前层次的循环,不论是while循环还是for循环都可以使用break语句。break语句的作用是在循环体内部遇到某个条件时立即终止循环的执行,而不管是哪种类型的循环。因此,break语句既适用于while循环,也适用于for循环。

11. for(int i = 1; i < 10; i += 3;) ; 表示i从1开始到10结束间隔为3,相当于1、4、7、10。( )

【答案】×

【考纲知识点】控制语句结构(for循环语句相关知识)

【解析】在 C++ 中,for循环语句的基本语法格式为for(初始化表达式; 条件表达式; 迭代表达式)。

对于语句for(int i = 1; i < 10; i += 3;):

初始化表达式:int i = 1,定义了一个整型变量i并初始化为 1。

条件表达式:i < 10,它决定了循环是否继续执行,只要i的值小于 10,循环就会持续进行。

迭代表达式:i += 3,表示每次循环结束后,i的值会增加 3。

按照这个for循环的执行逻辑,循环会依次执行,当i为 1 时满足条件进入循环,然后i变为 4,再次满足条件继续循环,接着i变为 7,依然满足条件继续循环,而当i变为 10 时,由于条件表达式是i < 10,此时已经不满足条件了,循环就会结束,所以i能取到的值是 1、4、7,并不会取到 10。

所以题目说法错误,答案为 ×。

12.下面C++代码能够执行,则将输出45。( )

【答案】×

【考纲知识点】循环语句(一级)

【解析】本题考察for循环语句;本题循环变量i枚举从0、1、2···直到9,循环体中执行Sum+=i,但是Sum没有给定初始值,所以最终Sum的值未知。所以本题错误。

13、在C++中,break语句⽤于终⽌当前层次的循环 ,循环可以是 for循环 ,也可以是 while循环 。  (  )

答案【正确】

题目解析:break以语句可以正确终止当前层次的循环,并且无论是for循环还是while循环都可以,故答案为正确

14、在C++, continue语句通常与if语句配合使⽤ 。  ( )

答案【正确】

题目解析:continue语句在循环中用于跳过本次循环,通常需要设定某种条件来跳过对应的循环,所以说与if语句配合使用情况居多,故答案为正确

15.下面C++代码执行后,最后一次输出是10。( )

【答案】×

【考纲知识点】循环语句(一级)

【解析】本题考察for循环语句;本题循环变量i枚举1、4、7、9,最后一次输出i的值为9。所以本题错误。

16. 下⾯C++代码执⾏后将输出10。( × )

int N = 0;

for (int i = 0; i < 10; i++){

    continue;

    N += 1;

}

cout << N;

解析:错误。continue 语句跳过循环体,N 始终为 0。

17. 下⾯C++代码执⾏后将输出100。( × )

int i;

for (i = 0; i <= 100; i++)

    continue;

cout << i;

解析:错误。循环执行101次,输出 i 为 101。

18. 下⾯C++代码被执⾏时,将执⾏三次输出(即标记⾏L2将被执⾏⼀次)。( × )

for (int i = 0; i < 10; i+=3)

    cout << i;  //L2

解析:错误。循环执行4次,输出 0, 3, 6, 9。

19. 在C++的循环体内部,如果 break 和 continue 语句连续在⼀起,那么作⽤抵消,可以顺利执⾏下⼀次循环。( × )

解析:错误。break 会终止循环,continue 会跳过当前循环。

20.在C++, break 语句通常与if语句配合使用。( )

【答案】×

【考纲知识点】循环语句(一级)

【解析】本题主要考察break语句用法;break语句用于跳出循环或switch语句,通常与循环语句:for、while或者选择语句:switch配合使用。所以本题错误。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容