第五章循环结构程序设计《计算机基础与程序设计》广东普通专升本
第五章 循环结构程序设计
真题
一、单项选择题
1.【精析】A
for循环结束条件是i>=4,所以当i的值为1、2、3时,才会执行for循环,选项A正确。
2.【精析】D
第1次循环:a=1,先输出a的值1,然后a的值自增1;
第2次循环:a=2,先输出a的值2,然后a的值自增1;
第3次循环:a=3,先输出a的值3,然后a的值自增1;
第3次循环结束a的值为4,此时不满足进入循环的条件,退出循环。所以最终输出结果为:123。
二、判断题
1.【精析】×
break是终止整个循环,continue是结束本次循环进入下一次循环。
三、计算题
1.【精析】(1)4 (2)6
a=2022,第一次循环sum=0+2,a=202;第二次循环sum=0+2+2,a=20;第三次循环sum=0+2+2+0,a=2;第四次循环,sum=0+2+2+0+2,a=0,此时表达式a!=0为假,退出循环,所以循环共执行了4次,程序最后运行结果是6。
基础题
速查答案
一、单项选择题
1-5 CBADD
6-10 ACCAD
二、判断题
1-5 ×√××√
6-10 ×√×××
11 ×
答案解析
一、单项选择题
1.【精析】C
do…while语句构成的循环可以使用for语句或while语句来改写,选项A错误;do…while语句构成的循环中,也可以使用continue来结束本次循环,或者直到条件不满足时,退出循环,选项B错误;当条件表达式的值为0时,退出循环,选项C正确,选项D错误。
2.【精析】B
在 for循环中,如果省略条件表达式,则默认条件为真,程序将一直执行下去,除非遇到break语句,选项B正确。
要点击结
for 语句的一般形式为:for(表达式1;表达式2;表达式3)
①表达式1省略,即不设置初值,表达式1后的分号不能省略,但为了程序的正常执行,应在for 语句之前给循环变量赋以初值。
②表达式2省略,即不设置和检查循环的条件,此时认为表达式2始终为真,循环将无终止地进行下去,直至遇到 break语句为止。
③表达式3 省略,此时应另外设法保证循环能正常结束,否则该循环没有意义。
3.【精析】A
while与 do···while语句的主要区别是:while循环在不满足循环条件时,可能出现一次循环体也不执行的情况;do···while无论条件是否满足,循环体至少执行一次。
4.【精析】D
for循环常用于循环次数已知的循环中,但也可以用于循环次数未知的循环中,选项A错误;for循环是先判断表达式,根据表达式的值来决定是否循环,选项B错误;在for循环中如果中途要退出循环,可以使用 break语句来实现,选项C错误。
5.【精析】D
continue 语句的作用是结束本次循环,break语句的作用是结束整个循环,选项A、C错误;break语句可以在循环体内和 switch语句体内使用,选项B 错误。
6.【精析】 A
因为k=1是一个赋值表达式,值为1,因此,循环条件一直成立,循环体语句将执行无限次。
7.【精析】 C
m++<=5中表达式m++的值为m加1之前的值,当m=6时,不满足循环条件m<=5,但是m还要加1变为7,所以退出循环时m的值为7.
8.【精析】 C
当i=4时,不满足循环条件i<4,但是i还要加1变为5,所以退出循环时i的值为5.
9.【精析】 A
&&为逻辑与,只有&&运算符两侧的表达式均为真时,才满足循环条件,当x=4时,x<4为假,不满足循环条件,所以循环次数为4.
10.【精析】 D
i为奇数且每次增2,当i>10时结束循环,i+1为偶数,所以“s+=i+1;”中s累计的是1~10中的偶数之和。
二、判断题
1.【精析】✗
循环体可以是一个简单的语句,也可以是复合语句(包含一个以上的语句),复合语句应用花括号括起来。
2.【答案】√
3.【精析】 ✗
break 和 continue都是用来控制循环的语句.break用于完全结束一个循环,跳出循环体执行循环后面的语句;continue用于跳过本次循环,执行下次循环。
4.【精析】✗
在执行 while语句时,先检查循环条件表达式的值,当值为非0(真)时,就执行while语句中的循环体语句;当值为0(假)时,不执行循环体语句。
要点总结
do···while语句的特点是:先无条件地执行一次循环体,然后再判断循环条件是否成立。
while循环的特点是:先判断条件表达式,后执行循环体语句。
5.【答案】√
6.【精析】×
for语句使用比较灵活,不仅可以用于循环次数已经确定的情况,还可以用于循环次数不确定而只给出循环结束条件的情况。
7.【答案】✔
8.【精析】×
while循环、do···while循环和for循环,都可以用break语句跳出循环,都可以用continue语句结束本次循环。
9.【精析】×
一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。3种循环结构(while循环、do···while循环和for循环)可以互相嵌套。
10.【精析】×
该程序段为两个嵌套的for循环,第一个for循环执行一次,第二个for循环就会执行10次,所以语句1会执行100次。
11.【精析】×
求解累乘问题时,作为存放累乘结果的变量的初值应为1,否则其累乘结果无意义;累加问题求和时,作为存放累加结果的变量的初值应为0。
三、填空题
1.while do···while for 2.非零
3.do···while 4.真
5.4 6.continue
四、简答题
1.【参考答案】当(while)型循环结构是先判断条件然后再运行,如果条件不成立,则循环可能一次也不执行;直到(do···while)型循环结构是先无条件执行一次循环体,然后再检查条件,若成立则继续执行循环体。也就是说,直到型(do···while)循环结构无论条件是否成立,都至少执行一次循环体。
2.【参考答案】要构成有效的循环,则必须满足以下两个条件:(1)循环体,必须含有需要重复执行的操作;(2)循环结束的条件,即在什么条件下停止重复。
3.【参考答案】break语句的作用是直接跳出循环体,执行循环体下面的语句;continue语句的作用是结束本次循环,即跳过循环体中下面尚未执行的语句,然后进行下一次循环判定。可以简单理解为:continue语句只是结束本次循环,而不是整个循环过程,而break语句结束整个循环过程,不再进行循环条件判断。
五、计算题
1.【精析】(1)56 (2)55
执行循环体时,打印语句中表达式x-的值为56,所以打印56。执行打印语句后,x的值变为55;接着判断循环条件,由于x的值为55,lx为0,循环条件不成立,退出循环。
2.【精析】(1)3次 (2)876
n的初值为9,9>6,条件成立,执行第1次循环后,n的值为8,满足条件,继续执行第2次循环,得到n的值为7,再次进行条件判断,执行第3次循环,得到n的值为6,此时不再满足循环条件,所以输出结果为876。
3.【精析】(1)3次 (2)123
初始条件k=0,while条件成立,进入循环,执行“k++;”语句,输出k的值1,再次判断,满足循环条件,继续执行循环体,当输出k的值为3时,不满足循环条件,所以打印结果为123。
4.【精析】 (1)空语句 (2)5
在程序中,for循环的后面还有一个分号,表示循环体为空语句。第1次循环时,先执行循环变量赋初值部分:s=0,i=1,再判断条件表达式i<3成立,执行空语句,接着执行循环变量增值部分,即(i++,s+=i)逗号表达式。执行逗号表达式时,先执行i++,i的值变为2,再执行s+=i,s的值变为2,所以第一次循环结束,得到结果:i=2,s=2.第2次循环时,先判断条件表达式i<3成立,执行空语句,接着执行(i++,s+=i)逗号表达式,i的值变为3,s的值变为5,此时不满足循环条件,退出循环,输出s的值5.
5.【精析】 (1)2次 (2)10,109,1打印语句中的x--,表示先输出x的值,然后执行x-1操作。执行第1次循环时,打印出x的值10,y的值10,打印完后,x变为9;再执行“y=++i;”语句,y的值变为1;判断循环条件成立,执行第2次循环,打印x的值9,y的值1,打印完后,x变为8;此时循环条件不成立,退出循环。
6.【精析】 (1)#*#*# (2)i<3或(i<=2)在循环体内,当循环控制变量i为奇数时,if语句的条件为真,打印#,并通过continue语句结束本次循环,进入下一次循环;当循环控制变量i为偶数时,if语句的条件为假,打印*,所以输出#*#*#。
7.【精析】 (1)结束本次循环 (2)8在循环体语句中,b的初值为1,判断条件if(b%3==1)成立,b值加3,变为4;下一次循环时,判断条件if(b%3==1)仍然成立,b值加3······这样b%3一直为1,循环体一共完整执行7次,直到b加到22时,通过“if(b>=20) break;”语句退出循环。此时,执行了7次a++,所以a的值为8.
提升题
答案速查
一、单项选择题
1-5 CABBC 6-10 DCDCC 11-14 DCDC
答案解析
一、单项选择题
1.【精析】C
在循环体内定义语句,每次执行循环体时都会被重新定义,选项A、B错误;s作为累乘结果,其初值应为1,故选C.
2.【精析】A
因为x为0时,!x为真,表示条件成立,执行循环体。而当x为0时,x==0为真,表示条件成立,执行循环体,因此,选项A 正确。
3.【精析】B
t=1是一个赋值表达式,赋值表达式的值为赋值后运算符左侧变量的值,所以循环控制表达式的值为1,执行循环体。
技巧点拨
当赋值表达式为循环条件时,要注意循环条件判断的是赋值之后的值。
4.【精析】B
x=-1为非零值,即为逻辑真,则!x为0,所以 while语句条件不成立,循环体一次也不执行。
5.【精析】C
选项A中,表达式++a的值为变量a加1后的值,这样将从字母b开始输出。选项B、D中,循环控制变量a没有更新,将陷入死循环。选项C中,表达式a++的值为变量a加1前的值,这样先输出字母a,然后变量a加1,再输出字母b⋯⋯直至输出字母z,因此,选项C正确。
6.【精析】D
当条件表达式(a!=20&&n<10)的值为假时,循环结束。这样要求表达式a!=20为假(即a的值等于20)或者表达式(n<10)为假(即n的值大于等于10)。因此,选项D正确。
7.【精析】 C
x=-1,执行“x=x*x;”语句后,x的值为1,这样! x为0,条件不成立,退出循环,因此,循环体只执行了一次。
8.【精析】 D
变量i的初值为0,循环条件i < 9成立,执行循环体;由于i < 1,执行“continue;”语句,将跳过循环体下面的语句,直接进入下一次循环;变量i的值仍为0,循环条件i < 9成立,执行循环体……由于变量i的值始终得不到更新,因此,陷入死循环。
9.【精析】C
由于变量sum没有赋初值,所以该程序的值不能确定。
10.【精析】C
外循环for(i=5;i>0;i-)要执行5次(5~1),内循环for(j=0;j<4;j++)要执行4次(0~3),因此,内循环体总共要执行20次。
11.【精析】D 循环语句的执行过程如下:① 执行赋初值语句“i=2;”,变量i的值为2;② 判断循环条件i==0,条件不成立,退出循环,因此无输出。
12.【精析】C
在选项A中,循环控制变量i的值在1~10之间变化,不可能通过break语句退出循环;在B选项中,对循环控制变量没有任何的赋值和判断,循环体为空语句,属于死循环;在选项C中,执行循环体后k的值加1,k的值最终会达到10000,退出循环;在选项D中,循环体为空语句,变量i的值始终为6,无法退出循环。
13.【精析】D
while(m)是循环语句,表示只要变量m的值不等于0就执行switch语句。首先m等于1,执行第1次循环后,m等于2;执行第2次循环后,m等于4;执行第3次循环后,m等于3;执行第4次循环后,m等于2;执行第5次循环后,m又等于4……如此循环往复,m不可能为0,因此,是个死循环。
14.【精析】C
x的初值为1,进入循环体,第1次循环时,执行x+=5,x的值变为6,此时y的值为2;第2次循环时,进行条件判断,执行语句“x-=3;”,x的值变为3,此时y的值变为3,继续执行第3次循环……直到x的值为10时,遇break语句退出循环,此时y的值为6。
二、计算题
1.【精析】 (1)5次 (2)0
对于循环条件while(-y)来说,表达式--y为变量y减1之后的值,即先将y的值减1,再判断y的值是否为0,当y的值为0时,退出循环。而“printf("%d\n",y--);”语句中,表达式y--的值是变量y减1之前的值,即先输出y的值,然后y再减1。执行过程:第1次循环:执行y--操作,y的值变为9,然后执行--y操作,此时y的值变为8,进行条件判断,条件成立,进入第2次循环……直到第5次循环时:执行y--操作,y的值变为1,然后执行--y操作,此时y的值变为0,条件不成立,退出循环。
2.【精析】 (1)b>=0 (2)a=2,b=8
语句“b--=a;”等价于“b=b-a;”,执行循环体后b的值为9,a的值为2;对于循环条件while(b--<0)来说,表达式b--的值是变量b减1之前的值,即先判断b<0是否成立,然后再将b减1,b的值为8。条件不成立,退出循环,此时a=2,b=8。
3.【精析】 (1)* (2)1
while条件为真,打印出*,执行“i++;”语句后,i的值为1,if条件成立,执行break语句后结束循环,换行输出。
4.【精析】 (1)64 (2)789645
从键盘输入12340后,执行语句“scanf("%d",&x);”时,读入一个整数1到x中,执行循环语句时,由于x>0,执行switch语句的第2条分支,分别打印7和8;接着读入一个整数2到x中,执行循环语句时,由于x>0,执行switch语句中第2条分支,打印9;接着读入一个整数3到x中,执行循环语句时,由于x>0,执行switch语句中第3条分支和第4条分支,分别打印6和4;接着读入一个整数4到x中,执行循环语句时,由于x>0,执行switch语句中第4条分支,打印5;最后读入一个整数0到x中,不满足循环条件结束循环。
5.【精析】(1)4次 (2)a=4,b=5
程序中,for循环体总共执行了9次(即i=1-9),当i的取值为2、4、6、8时,if语句的条件成立,执行语句“a++”;”,总共执行了4次,所以a的值为4,if语句的条件成立时,跳过语句“b++;”,因此,“b++;”语句总共执行了9-4=5次,所以b的值为5。
6.【精析】(1)3次 (2)x=15,y=14
程序的循环体语句中含有逗号表达式,逗号表达式的两个基本知识点是:①逗号表达式的运算顺序是从左向右运算;②逗号表达式的值为最右边表达式的值。第1次循环时,逗号表达式从左向右运算,先计算x=3*y,得x=3;再计算x+1为4(注意此时没有对x赋值,x的值不变),最后计算x-1为2,将最右边表达式x-1的值2赋给y,所以第1次循环结束,得到结果:x=3,y=2。同理第2次循环结束,得到结果:x=6,y=5。第3次循环结束,得到结果:x=15,y=14。
三、应用题




