教材第109页121页第五章循环结构程序设计
教材第109页121页第五章循环结构程序设计
真题
一、单项选择题
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 ×✔×××
一、单项选择题
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.【精析】Dfor循环常用于循环次数已知的循环中,但也可以用于循环次数未知的循环中,选项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.【答案】
不确定而只给出循环结束条件的情况。
7. 【答案】 \sqrt{\quad}
8. 【精析】 \times while 循环、do…while 循环和for循环,都可以用break语句跳出循环,都可以用continue语句结束本次循环。
9. 【精析】 \times 一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。3种循环结构(while循环、do…while循环和for循环)可以互相嵌套。
10. 【精析】 \times 该程序段为两个嵌套的for循环,第一个for循环执行一次,第二个for循环就会执行10次,所以语句1会执行100次。
11. 【精析】 \times 求解累乘问题时,作为存放累乘结果的变量的初值应为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,!x 为 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.【精析】Bt=1是一个赋值表达式,赋值表达式的值为赋值后运算符左侧变量的值,所以循环控制表达式的值为1,执行循环体。
技巧点拨
当赋值表达式为循环条件时,要注意循环条件判断的是赋值之后的值。
4.【精析】Bx=-1为非零值,即为逻辑真,则kx为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正确。
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.【精析】Bt=1是一个赋值表达式,赋值表达式的值为赋值后运算符左侧变量的值,所以循环控制表达式的值为1,执行循环体。
技
技巧点拨
当赋值表达式为循环条件时,要注意循环条件判断的是赋值之后的值。
4.【精析】Bx=-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当条件表达式( 的值为假时,循环结束。这样要求表达式a1=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 循环语句的执行过程如下:\enclose{circle}{1} 执行赋初值语句 “i=2; ”,变量 i 的值为 2;\enclose{circle}{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
从键盘输入 1 2 3 4 0 后,执行语句 “scanf("%d", &x)”,时,读入一个整数 1 到 x 中,执行循环语句时,由于 x>0,执行 switch 语句的第 1 条和第 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\sim 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
程序的循环体语句中包含有逗号表达式,逗号表达式的两个基本知识点是:\enclose{circle}{1} 逗号表达式的运算顺序是从左向右运算;\enclose{circle}{2} 逗号表达式的值为最右边表达式的值。第 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。