内容正文:
《编程语言基础-C语言》高等教育出版社(第5版)
第四章 循环结构程序设计 章节过关卷(一)(原卷版)
考试时间:90分钟 满分:100分
姓名 班级 学号
一、单项选择题(本题共25小题,每题2分,共50分)
1、关于while循环,下列说法正确的是( )
A. 循环体至少执行一次
B. 循环条件为真时执行循环体
C. 循环体中必须包含改变循环条件的语句
D. 循环条件可以是任意表达式
2、以下代码的循环次数是( )
int i = 5;
while (i < 5) {
i++;
}
A. 0 B. 1 C. 5 D. 无限
3、do…while循环的特点是( )
A. 先判断条件,后执行循环体
B. 循环体至少执行一次
C. 必须用break退出
D. 循环体中不能使用continue
4、以下代码的输出是( )
int i = 1;
do {
printf("%d ", i);
i++;
} while (i < 3);
A. 1 B. 1 2 C. 1 2 3 D. 2 3
5、关于for循环,下列说法正确的是( )
A. 三个表达式都必须写
B. 循环变量必须在循环外部定义
C. 表达式1只在循环开始时执行一次
D. 表达式2为空时表示条件为假
6、以下代码的输出是( )
int i;
for (i = 0; i < 3; i++) {
printf("%d ", i);
}
A. 0 1 2 B. 1 2 3 C. 0 1 2 3 D. 1 2
7、以下for循环执行的次数是( )
for (int i = 0; i < 5; i += 2) {
}
A. 2 B. 3 C. 4 D. 5
8、关于多重循环,下列说法正确的是( )
A. 内层循环的break会直接结束所有循环
B. 外层循环执行一次,内层循环执行一轮
C. 多重循环的执行效率总是高于单层循环
D. 内层循环的continue会跳过外层循环
9、以下代码的输出是( )
for (int i = 1; i <= 2; i++) {
for (int j = 1; j <= 2; j++) {
printf("%d ", i * j);
}
}
A. 1 2 2 4 B. 1 2 3 4 C. 1 2 2 3 D. 1 2 4 8
10、以下代码中break的作用是( )
for (int i = 1; i <= 3; i++) {
if (i == 2) break;
printf("%d ", i);
}
A. 结束本次循环 B. 结束整个循环
C. 结束程序 D. 跳过本次循环继续下一次
11、以下代码中continue的作用是( )
for (int i = 1; i <= 3; i++) {
if (i == 2) continue;
printf("%d ", i);
}
A. 结束整个循环
B. 结束程序
C. 跳过本次循环剩余语句,进入下一次循环
D. 暂停循环
12、以下代码的输出是( )
int i = 0;
while (i < 3) {
i++;
if (i == 2) continue;
printf("%d ", i);
}
A. 1 2 3 B. 1 3 C. 2 3 D. 1
13、以下程序段实现的功能是( )
int n, sum = 0;
scanf("%d", &n);
while (n > 0) {
sum += n % 10;
n /= 10;
}
A. 求n的位数 B. 求n的各位数字之和
C. 求n的阶乘 D. 求n的逆序数
14、以下代码的输出是( )
int i = 1;
do {
printf("%d ", i);
i++;
} while (i <= 0);
A. 1 B. 无输出 C. 1 0 D. 死循环
15、下列哪个循环结构在条件判断前至少执行一次循环体( )
A. while B. for C. do…while D. 以上都是
16、关于for(;;)的说法,正确的是( )
A. 语法错误 B. 等价于while(1)
C. 循环一次也不执行 D. 循环变量必须定义
17、以下代码的输出是( )
int i, j;
for (i = 0, j = 5; i < 3; i++, j--) {
printf("%d ", i + j);
}
A. 5 5 5 B. 5 6 7 C. 5 5 6 D. 5 4 3
18、在循环中使用break语句后,程序将( )
A. 继续执行循环体 B. 跳出所在循环
C. 跳出所有循环 D. 结束程序
19、下列语句中,不能构成无限循环的是( )
A. while(1) B. for(;;) C. do{}while(0) D. while(1==1)
20、以下代码输出结果是( )
int i = 1;
while (i <= 5) {
if (i % 2 == 0) {
i++;
continue;
}
printf("%d ", i);
i++;
}
A. 1 3 5 B. 2 4 C. 1 2 3 4 5 D. 1 3
21、以下程序用于计算1+2+…+100,划线处应填( )
int i = 1, sum = 0;
while (i <= 100) {
sum += i;
________;
}
A. i++ B. i = i + 1 C. i += 1 D. 以上都可以
22、以下代码的输出是( )
int i;
for (i = 0; i < 3; i++) {
if (i == 1) break;
printf("%d ", i);
}
A. 0 B. 0 1 C. 0 1 2 D. 无输出
23、以下代码的输出是( )
int i, j;
for (i = 1; i <= 3; i++) {
for (j = 1; j <= 2; j++) {
if (i == j) break;
printf("%d%d ", i, j);
}
}
A. 11 12 21 22 31 32 B. 12 21 31
C. 21 31 32 D. 21 31
24、以下程序用于输出乘法口诀表的一部分,划线处应填( )
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
printf("%d*%d=%d ", i, j, ________);
}
printf("
");
}
A. i*j B. i+j C. i-j D. j*i
25、以下代码的输出是( )
int i = 0;
do {
printf("%d ", i);
} while (i++ < 2);
A. 0 1 2 B. 0 1 C. 1 2 D. 0 1 2 3
二、多选题(本题共5小题,每题4分,共20分)
1、关于while循环,下列说法正确的有( )
A. 循环条件为真时执行循环体
B. 循环体可能一次都不执行
C. 循环体必须用大括号括起来
D. 循环条件可以是常量
2、关于for循环,以下说法正确的有( )
A. 表达式1可以省略 B. 表达式2可以省略
C. 表达式3可以省略 D. 三个表达式都可以省略
3、以下关于break和continue的说法,正确的有( )
A. break可用于循环和switch B. continue可用于循环
C. break会终止当前循环 D. continue会跳过本次循环剩余语句
4、以下能构成无限循环的语句有( )
A. while(1) B. for(;;) C. do{}while(1) D. while(0)
5、关于多重循环,下列说法正确的有( )
A. 内层循环的break只退出内层循环
B. 外层循环的break只退出外层循环
C. 内层循环可以包含外层循环
D. 多重循环的执行顺序是先外层后内层
三、判断题(本题共10小题,每题2分,共20分)
1、while循环的循环体至少执行一次。( )
2、do…while循环的循环体至少执行一次。( )
3、for循环的三个表达式都可以省略。( )
4、break语句只能用于循环结构中。( )
5、continue语句可以用于跳出整个循环。( )
6、多重循环中,内层循环的break会同时退出外层循环。( )
7、for循环中,表达式1只在循环开始时执行一次。( )
8、在while循环的表达式(循环条件)中不能使用赋值运算符。( )
9、do…while循环的条件后面必须加分号。( )
10、在循环中使用continue语句后,循环条件判断依然会执行。( )
四、填空题(本题共5小题,每题2分,共10分)
1、while循环的语法格式为:while ( ) 循环体;
2、do…while循环的语法格式为:do { 循环体 } while ( );
3、在多重循环中,( )语句只能退出当前所在的一层循环。
4、以下程序段执行后,输出结果为( )。
int i = 0;
while (i < 3) {
i++;
if (i == 2) continue;
printf("%d", i);
}
5、以下程序段执行后,输出结果为 ( )。
int i, j;
for (i = 1; i <= 2; i++) {
for (j = 1; j <= 2; j++) {
if (i + j == 3) continue;
printf("%d", i * j);
}
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
《编程语言基础-C语言》高等教育出版社(第5版)
第四章 循环结构程序设计 章节过关卷(一)(解析版)
考试时间:90分钟 满分:100分
姓名 班级 学号
一、单项选择题(本题共25小题,每题2分,共50分)
1、关于while循环,下列说法正确的是( )
A. 循环体至少执行一次
B. 循环条件为真时执行循环体
C. 循环体中必须包含改变循环条件的语句
D. 循环条件可以是任意表达式
【答案】B
【解析】while循环先判断条件,条件为真时执行循环体;循环体中不一定必须改变条件,但通常需要,否则可能死循环;循环条件一般为关系或逻辑表达式。
2、以下代码的循环次数是( )
int i = 5;
while (i < 5) {
i++;
}
A. 0 B. 1 C. 5 D. 无限
【答案】A
【解析】初始i=5,条件i<5为假,循环体一次都不执行。
3、do…while循环的特点是( )
A. 先判断条件,后执行循环体
B. 循环体至少执行一次
C. 必须用break退出
D. 循环体中不能使用continue
【答案】B
【解析】do…while先执行一次循环体,再判断条件,因此至少执行一次。
4、以下代码的输出是( )
int i = 1;
do {
printf("%d ", i);
i++;
} while (i < 3);
A. 1 B. 1 2 C. 1 2 3 D. 2 3
【答案】B
【解析】第一次输出1,i=2;条件i<3为真,第二次输出2,i=3;条件为假,结束。
5、关于for循环,下列说法正确的是( )
A. 三个表达式都必须写
B. 循环变量必须在循环外部定义
C. 表达式1只在循环开始时执行一次
D. 表达式2为空时表示条件为假
【答案】C
【解析】表达式1仅执行一次;三个表达式都可省略,但分号不能省;表达式2为空表示条件为真。
6、以下代码的输出是( )
int i;
for (i = 0; i < 3; i++) {
printf("%d ", i);
}
A. 0 1 2 B. 1 2 3 C. 0 1 2 3 D. 1 2
【答案】A
【解析】i从0开始,当i=0,1,2时输出,i=3时条件为假退出。
7、以下for循环执行的次数是( )
for (int i = 0; i < 5; i += 2) {
}
A. 2 B. 3 C. 4 D. 5
【答案】B
【解析】i=0,2,4共3次,i=6时退出。
8、关于多重循环,下列说法正确的是( )
A. 内层循环的break会直接结束所有循环
B. 外层循环执行一次,内层循环执行一轮
C. 多重循环的执行效率总是高于单层循环
D. 内层循环的continue会跳过外层循环
【答案】B
【解析】外层循环每执行一次,内层循环完整执行一轮。
9、以下代码的输出是( )
for (int i = 1; i <= 2; i++) {
for (int j = 1; j <= 2; j++) {
printf("%d ", i * j);
}
}
A. 1 2 2 4 B. 1 2 3 4 C. 1 2 2 3 D. 1 2 4 8
【答案】A
【解析】外层i=1时内层j=1,2输出1,2;i=2时内层输出2,4。
10、以下代码中break的作用是( )
for (int i = 1; i <= 3; i++) {
if (i == 2) break;
printf("%d ", i);
}
A. 结束本次循环 B. 结束整个循环
C. 结束程序 D. 跳过本次循环继续下一次
【答案】B
【解析】break用于强制退出当前循环结构。
11、以下代码中continue的作用是( )
for (int i = 1; i <= 3; i++) {
if (i == 2) continue;
printf("%d ", i);
}
A. 结束整个循环
B. 结束程序
C. 跳过本次循环剩余语句,进入下一次循环
D. 暂停循环
【答案】C
【解析】continue跳过本次循环后面未执行的语句,继续下一次循环。
12、以下代码的输出是( )
int i = 0;
while (i < 3) {
i++;
if (i == 2) continue;
printf("%d ", i);
}
A. 1 2 3 B. 1 3 C. 2 3 D. 1
【答案】B
【解析】i=1输出1,i=2时跳过输出,i=3输出3。
13、以下程序段实现的功能是( )
int n, sum = 0;
scanf("%d", &n);
while (n > 0) {
sum += n % 10;
n /= 10;
}
A. 求n的位数 B. 求n的各位数字之和
C. 求n的阶乘 D. 求n的逆序数
【答案】B
【解析】每次取个位累加,再去掉个位,直到n为0。
14、以下代码的输出是( )
int i = 1;
do {
printf("%d ", i);
i++;
} while (i <= 0);
A. 1 B. 无输出 C. 1 0 D. 死循环
【答案】A
【解析】先执行一次循环体输出1,再判断条件i<=0为假,结束。
15、下列哪个循环结构在条件判断前至少执行一次循环体( )
A. while B. for C. do…while D. 以上都是
【答案】C
【解析】do…while先执行循环体再判断条件。
16、关于for(;;)的说法,正确的是( )
A. 语法错误 B. 等价于while(1)
C. 循环一次也不执行 D. 循环变量必须定义
【答案】B
【解析】三个表达式均省略,条件默认为真,形成无限循环。
17、以下代码的输出是( )
int i, j;
for (i = 0, j = 5; i < 3; i++, j--) {
printf("%d ", i + j);
}
A. 5 5 5 B. 5 6 7 C. 5 5 6 D. 5 4 3
【答案】A
【解析】第一次i=0,j=5输出5;第二次i=1,j=4输出5;第三次i=2,j=3输出5。
18、在循环中使用break语句后,程序将( )
A. 继续执行循环体 B. 跳出所在循环
C. 跳出所有循环 D. 结束程序
【答案】B
【解析】break只跳出当前所在的一层循环。
19、下列语句中,不能构成无限循环的是( )
A. while(1) B. for(;;) C. do{}while(0) D. while(1==1)
【答案】C
【解析】do…while(0)只执行一次,不是无限循环。
20、以下代码输出结果是( )
int i = 1;
while (i <= 5) {
if (i % 2 == 0) {
i++;
continue;
}
printf("%d ", i);
i++;
}
A. 1 3 5 B. 2 4 C. 1 2 3 4 5 D. 1 3
【答案】A
【解析】i=1输出1;i=2跳过输出;i=3输出3;i=4跳过;i=5输出5。
21、以下程序用于计算1+2+…+100,划线处应填( )
int i = 1, sum = 0;
while (i <= 100) {
sum += i;
________;
}
A. i++ B. i = i + 1 C. i += 1 D. 以上都可以
【答案】D
【解析】三种写法都可使i递增,避免死循环。
22、以下代码的输出是( )
int i;
for (i = 0; i < 3; i++) {
if (i == 1) break;
printf("%d ", i);
}
A. 0 B. 0 1 C. 0 1 2 D. 无输出
【答案】A
【解析】i=0输出0;i=1时break退出循环。
23、以下代码的输出是( )
int i, j;
for (i = 1; i <= 3; i++) {
for (j = 1; j <= 2; j++) {
if (i == j) break;
printf("%d%d ", i, j);
}
}
A. 11 12 21 22 31 32 B. 12 21 31
C. 21 31 32 D. 21 31
【答案】D
【解析】i=1时j=1,i==j跳出内层;i=2时j=1输出21,j=2时i==j跳出;i=3时j=1输出31,j=2输出32。
24、以下程序用于输出乘法口诀表的一部分,划线处应填( )
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
printf("%d*%d=%d ", i, j, ________);
}
printf("
");
}
A. i*j B. i+j C. i-j D. j*i
【答案】A
【解析】输出i*j的结果。
25、以下代码的输出是( )
int i = 0;
do {
printf("%d ", i);
} while (i++ < 2);
A. 0 1 2 B. 0 1 C. 1 2 D. 0 1 2 3
【答案】A
【解析】第一次输出0,判断0<2为真,i变为1;第二次输出1,判断1<2为真,i变为2;第三次输出2,判断2<2为假,结束。
二、多选题(本题共5小题,每题4分,共20分)
1、关于while循环,下列说法正确的有( )
A. 循环条件为真时执行循环体
B. 循环体可能一次都不执行
C. 循环体必须用大括号括起来
D. 循环条件可以是常量
【答案】A, B, D
【解析】循环条件为真时执行,可能一次都不执行;循环体只有一条语句时可省略大括号;条件可以是常量,如while(1)。
2、关于for循环,以下说法正确的有( )
A. 表达式1可以省略 B. 表达式2可以省略
C. 表达式3可以省略 D. 三个表达式都可以省略
【答案】A, B, C, D
【解析】for的三个表达式均可省略,但分号不能省。
3、以下关于break和continue的说法,正确的有( )
A. break可用于循环和switch B. continue可用于循环
C. break会终止当前循环 D. continue会跳过本次循环剩余语句
【答案】A, B, C, D
【解析】break用于退出循环或switch;continue用于跳过本次循环剩余部分。
4、以下能构成无限循环的语句有( )
A. while(1) B. for(;;) C. do{}while(1) D. while(0)
【答案】A, B, C
【解析】while(1)、for(;;)、do…while(1)都是无限循环;while(0)一次都不执行。
5、关于多重循环,下列说法正确的有( )
A. 内层循环的break只退出内层循环
B. 外层循环的break只退出外层循环
C. 内层循环可以包含外层循环
D. 多重循环的执行顺序是先外层后内层
【答案】A, B, D
【解析】break只退出所在层;多重循环执行时外层一次,内层一轮。
三、判断题(本题共10小题,每题2分,共20分)
1、while循环的循环体至少执行一次。( )
【答案】×
【解析】while先判断条件,可能一次都不执行。
2、do…while循环的循环体至少执行一次。( )
【答案】√
【解析】do…while先执行循环体再判断条件。
3、for循环的三个表达式都可以省略。( )
【答案】√
【解析】for(;;)是合法写法,表示无限循环。
4、break语句只能用于循环结构中。( )
【答案】×
【解析】break也可用于switch语句。
5、continue语句可以用于跳出整个循环。( )
【答案】×
【解析】continue只跳过本次循环,不跳出整个循环。
6、多重循环中,内层循环的break会同时退出外层循环。( )
【答案】×
【解析】break只退出当前所在层的循环。
7、for循环中,表达式1只在循环开始时执行一次。( )
【答案】√
【解析】表达式1在循环开始前执行一次。
8、在while循环的表达式(循环条件)中不能使用赋值运算符。( )
【答案】×
【解析】可以使用,如while((ch=getchar())!='
')是常见用法。
9、do…while循环的条件后面必须加分号。( )
【答案】√
【解析】do…while(条件); 的分号不能省略。
10、在循环中使用continue语句后,循环条件判断依然会执行。( )
【答案】√
【解析】continue跳过循环体剩余部分,然后继续下一次循环的条件判断。
四、填空题(本题共5小题,每题2分,共10分)
1、while循环的语法格式为:while ( ) 循环体;
【答案】表达式
【解析】循环条件为真时执行循环体。
2、do…while循环的语法格式为:do { 循环体 } while ( );
【答案】表达式
【解析】条件为真时继续下一次循环。
3、在多重循环中,( )语句只能退出当前所在的一层循环。
【答案】break
【解析】break只退出所在循环层。
4、以下程序段执行后,输出结果为( )。
int i = 0;
while (i < 3) {
i++;
if (i == 2) continue;
printf("%d", i);
}
【答案】13
【解析】i=1输出1,i=2跳过,i=3输出3。
5、以下程序段执行后,输出结果为 ( )。
int i, j;
for (i = 1; i <= 2; i++) {
for (j = 1; j <= 2; j++) {
if (i + j == 3) continue;
printf("%d", i * j);
}
}
【答案】14
【解析】i=1,j=1输出1;i=1,j=2时i+j=3跳过;i=2,j=1时i+j=3跳过;i=2,j=2输出4,最终输出“14”。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$