第四章 循环结构程序设计《编程语言基础-C语言》(高教版第5版)章节过关卷(二)

2026-04-01
| 2份
| 19页
| 36人阅读
| 0人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 C语言程序设计高教版(第五版)全一册
年级 高一
章节 4.6 循环结构程序设计实例
类型 作业-同步练
知识点 循环结构
使用场景 同步教学
学年 2026-2027
地区(省份) 全国
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 271 KB
发布时间 2026-04-01
更新时间 2026-04-01
作者 xkw_063129603
品牌系列 学易金卷·阶段检测模拟卷
审核时间 2026-04-01
下载链接 https://m.zxxk.com/soft/57124307.html
价格 3.00储值(1储值=1元)
来源 学科网

内容正文:

《编程语言基础-C语言》高等教育出版社(第5版) 第四章 循环结构程序设计 章节过关卷(二)(解析版) 考试时间:90分钟 满分:100分 姓名 班级 学号 一、单项选择题(本题共25小题,每题2分,共50分) 1、以下代码段中,循环体执行的次数是( ) int i = 10; while (i-- > 5) { 循环体 } A. 5 B. 6 C. 10 D. 无限 【答案】A 【解析】循环条件判断时先使用i的值与5比较,再自减1。i初始10,依次比较10,9,8,7,6,共5次,当i=5时条件为假(5>5为假),退出循环。 2、以下代码的输出结果是( ) int x = 0; do { printf("%d ", x); } while (x++ < 2); A. 0 1 2 B. 0 1 C. 0 1 2 3 D. 0 1 2 3 4 【答案】A 【解析】第一次输出0,判断0<2为真,x变为1;第二次输出1,判断1<2为真,x变为2;第三次输出2,判断2<2为假,结束循环。 3、以下代码段中,循环结束后i的值为( ) int i; for (i = 0; i < 10; i++) { if (i == 5) break; } A. 4 B. 5 C. 6 D. 10 【答案】B 【解析】当i==5时执行break,此时i的值为5,循环终止。 4、以下程序的功能是计算1到100中所有奇数的和,划线处应填( ) int sum = 0, i; for (i = 1; i <= 100; ( )) { sum += i; } A. i++ B. i += 2 C. i = i + 1 D. i =+ 2 【答案】B 【解析】i从1开始,每次加2得到奇数,循环条件i<=100,求和。 5、关于以下代码,说法正确的是( ) int i = 0; while (i < 3) { int j = 0; while (j < 2) { printf("*"); j++; } i++; } A. 输出3个* B. 输出4个* C. 输出6个* D. 输出2个* 【答案】C 【解析】外层循环3次,内层每次输出2个*,共6个*。 6、以下代码的输出结果是( ) int i, j; for (i = 1; i <= 3; i++) { for (j = 1; j <= i; j++) { printf("%d", j); } printf(" "); } A. B.1 C.1 D.1 12 22 12 2 123 333 123 3 【答案】C 【解析】外层i=1,内层输出1;i=2输出12;i=3输出123。 7、以下代码的输出结果是( ) int i; for (i = 1; i <= 5; i++) { if (i % 2 == 0) continue; printf("%d", i); } A. 13 B. 24 C. 12345 D. 135 【答案】D 【解析】i为奇数时输出,即1,3,5。 8、以下代码段中,循环体执行的次数是( ) int i = 0; while (i++ < 5) { if (i == 3) continue; 循环语句 } A. 5 B. 4 C. 6 D. 无限 【答案】A 【解析】循环条件判断时先使用i再自增,i从0开始,每次条件判断后i增加1。i取值依次为0,1,2,3,4,共5次进入循环体,虽然i==3时continue跳过部分代码,但循环体仍然执行了(只是跳过后面的语句),因此循环体执行5次。 9、以下程序段中,变量sum的最终值是( ) int i, sum = 0; for (i = 1; i <= 4; i++) { if (i == 2) continue; if (i == 3) break; sum += i; } A. 1 B. 3 C. 4 D. 6 【答案】A 【解析】i=1时sum+=1得1;i=2时continue跳过;i=3时break退出循环,sum不再增加,最终为1。 10、以下代码的输出结果是( ) int i = 1; do { printf("%d ", i); i++; } while (i <= 1); A. 1 B. 1 2 C. 2 D. 1 2 3 【答案】A 【解析】第一次输出1,i变为2,判断2<=1为假,循环结束。 11、以下代码的输出结果是( ) int i, j; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { if (i == j) break; printf("%d%d ", i, j); } } A. 00 01 02 10 11 12 20 21 22 B. 01 02 10 12 20 21 C. 01 02 10 20 D. 01 02 10 20 21 【答案】D 【解析】i=0时,j=0时i==j跳出内层,无输出;i=1时,j=0输出10,j=1时跳出;i=2时,j=0输出20,j=1输出21,j=2时跳出。最终输出“10 20 21”。 12、关于for循环的表达式,下列说法错误的是( ) A. 表达式1和表达式3可以是逗号表达式 B. 表达式2可以是任意表达式 C. 表达式1、表达式2、表达式3都必须存在 D. 表达式2省略时表示循环条件永远为真 【答案】C 【解析】for的三个表达式都可以省略,不是必须存在。 13、以下代码的输出结果是( ) int i = 0; while (++i < 3) { printf("%d", i); } A. 123 B. 12 C. 1 D. 23 【答案】B 【解析】++i先自增再比较,i初始0,第一次i=1<3输出1;第二次i=2<3输出2;第三次i=3<3为假退出。 14、以下代码的输出结果是( ) int i, s = 0; for (i = 1; i <= 5; i++) { if (i % 2 == 0) continue; s = s + i; } printf("%d", s); A. 6 B. 9 C. 12 D. 15 【答案】B 【解析】i=1,3,5时累加,和为1+3+5=9。 15、以下程序段中,循环结束后i的值为( ) int i = 0; do { i++; } while (i < 5); A. 4 B. 5 C. 6 D. 0 【答案】B 【解析】循环执行到i=5时,条件i<5为假,退出,此时i=5。 16、以下代码的输出结果是( ) int i; for (i = 1; i <= 3; i++) { for (int j = 1; j <= 2; j++) { if (i == 2) break; printf("%d", i); } } A. 11 B. 33 C. 1133 D. 1111 答案:C 【解析】当i=1时,内层循环执行两次输出两个1;当i=2时,内层循环执行if语句,break跳出内层循环;i=3时,内层循环执行两次输出两个3。 17、以下代码的输出结果是( ) int i, j; for (i = 0; i < 2; i++) { for (j = 0; j < 2; j++) { if (i == j) continue; printf("%d%d ", i, j); } } A. 01 10 B. 00 01 10 11 C. 01 10 11 D. 01 【答案】A 【解析】i=0,j=0时continue跳过;j=1输出01;i=1,j=0输出10;j=1时continue跳过。 18、以下程序用于计算斐波那契数列的前10项,划线处应填( ) int a = 1, b = 1, i; printf("%d %d ", a, b); for (i = 3; i <= 10; i++) { ( ); printf("%d ", a); } A. a = a + b; b = a; B. a = b; b = a + b; C. b = a + b; a = b - a; D. a = a + b; b = a - b; 【答案】C 【解析】标准斐波那契递推:下一项 = a + b,然后更新a和b。选项C先计算b = a + b,再让a = b - a(即原来的b),实现a和b向后移动。 19、以下代码的输出结果是( ) int i; for (i = 0; i < 5; i++) { if (i == 2) break; if (i == 3) continue; printf("%d", i); } A. 01 B. 012 C. 0134 D. 01 【答案】D 【解析】i=0输出0,i=1输出1,i=2时break退出循环,后面的i=3,4不会执行。 20、以下程序段中,循环结束后n的值为( ) int n = 1234, count = 0; while (n) { count++; n /= 10; } A. 4 B. 5 C. 3 D. 0 【答案】A 【解析】每次去掉个位,直到n为0,统计了数字的位数,1234有4位。 21、以下代码的输出结果是( ) int i = 5; while (i) { printf("%d", i); i--; } A. 54321 B. 543210 C. 5 D. 死循环 【答案】A 【解析】i从5递减到1,输出5,4,3,2,1,当i=0时条件为假退出。 22、以下代码的输出结果是( ) int i = 1, sum = 0; do { sum += i; i++; } while (i <= 5); printf("%d", sum); A. 15 B. 10 C. 5 D. 0 【答案】A 【解析】1+2+3+4+5=15。 23、以下代码的输出结果是( ) int i, j; for (i = 1; i <= 3; i++) { for (j = 1; j <= 3; j++) { if (i + j > 4) break; printf("%d%d ", i, j); } } A. 11 12 13 21 22 31 B. 11 12 21 22 31 C. 11 12 21 31 D. 11 12 13 21 22 【答案】A 【解析】当i,j的和为4的时候,不输出i,j的值,i、j为其他值时都输出。 24、以下代码的输出结果是( ) int i = 0, j = 0; while (i < 3) { j = 0; while (j < 2) { if (i == 1 && j == 1) break; printf("%d%d ", i, j); j++; } i++; } A. 00 01 10 20 21 B. 00 01 10 20 C. 00 01 10 11 20 21 D. 00 01 10 20 21 30 【答案】A 【解析】i=0时,内层j=0输出00,j=1输出01;i=1时,内层j=0输出10,j=1时条件成立break,不输出11;i=2时,内层j=0输出20,j=1输出21。最终输出00 01 10 20 21。 25、以下程序段的功能是( ) int n, m; scanf("%d", &n); m = 0; while (n > 0) { m = m * 10 + n % 10; n /= 10; } printf("%d", m); A. 求n的各位数字之和 B. 求n的位数 C. 将n逆序输出 D. 判断n是否为回文数 【答案】C 【解析】每次取个位组成新数,实现数字反转。 二、多选题(本题共5小题,每题4分,共20分) 1、以下关于循环结构的说法,正确的有( ) A. while循环的条件表达式可以是任意类型,非0为真 B. for循环中的表达式1和表达式3都可以是逗号表达式 C. do…while循环的循环体至少执行一次 D. 在循环体内可以改变循环条件表达式的值 【答案】ABCD 【解析】所有说法均正确。 2、以下代码段中,可能导致死循环的有( ) A. int i=0; while(i<5) { i--; } B. int i=0; do { i++; } while(i>0); C. for(;;); D. int i=0; while(i<5) { i++; } 【答案】ABC 【解析】A中i递减永远小于5;B中i从1开始递增,永远大于0;C是无限循环;D是有限循环。 3、关于break语句,下列说法正确的有( ) A. 只能用于循环结构 B. 可以用于switch语句 C. 在多重循环中,break只能跳出当前层循环 D. 执行break后,程序继续执行循环外的下一条语句 【答案】BCD 【解析】break也可用于switch,A错误。 4、关于continue语句,下列说法正确的有( ) A. 只能用于循环结构 B. 执行continue后,循环体中continue后面的语句不再执行 C. 在while循环中,continue后会直接判断循环条件 D. 在for循环中,continue后会先执行表达式3,再判断表达式2 【答案】ABCD 【解析】continue跳过本次循环剩余部分;在while中直接判断条件;在for中先执行表达式3再判断。 5、以下程序段中,输出结果相同的选项有( ) A. int i=0; while(i<3) { printf("%d", i); i++; } B. int i=0; do { printf("%d", i); i++; } while(i<3); C. int i; for(i=0;i<3;i++) printf("%d", i); D. int i=0; while(i++<3) printf("%d", i-1); 【答案】ABCD 【解析】A、B、C、D均输出012。 三、判断题(本题共10小题,每题2分,共20分) 1、while循环的循环体可能一次也不执行。( ) 【答案】√ 【解析】条件一开始为假则跳过。 2、do…while循环的循环体至少执行一次。( ) 【答案】√ 【解析】先执行后判断。 3、在for循环中,表达式1、表达式2、表达式3都省略时,循环一次也不执行。( ) 【答案】× 【解析】for(;;)是无限循环,不会一次也不执行。 4、break语句只能用在循环体中。( ) 【答案】× 【解析】break也可用于switch语句。 5、continue语句只能用在循环体中。( ) 【答案】√ 【解析】continue只能用于循环结构。 6、在多重循环中,内层循环的break可以同时退出所有循环。( ) 【答案】× 【解析】只退出内层循环。 7、循环体中的语句必须用花括号括起来。( ) 【答案】× 【解析】如果只有一条语句,可以省略花括号。 8、在while循环中,循环条件表达式不能是赋值表达式。( ) 【答案】× 【解析】可以是赋值表达式,例如while((ch=getchar())!=' ')。 9、在do…while循环中,循环体可以一次都不执行。( ) 【答案】× 【解析】至少执行一次。 10、在for循环中,表达式1和表达式3都可以使用逗号运算符连接多个表达式。( ) 【答案】√ 【解析】如for(i=0,j=10; i<j; i++,j--)。 四、填空题(本题共5小题,每题2分,共10分) 1、以下程序段输出结果为 ( )。 int i = 0, s = 0; do { s += i; i++; } while (i <= 3); printf("%d", s); 【答案】6 【解析】i取值0,1,2,3,求和0+1+2+3=6。 2、以下程序段输出结果为 ( )。 int i, j; for (i = 1; i <= 3; i++) { for (j = 1; j <= 3; j++) { if (i + j == 4) continue; printf("%d", i); } } 【答案】112233 【解析】i=1时,内层j=1输出1,j=2时i+j=3不跳过输出1,j=3时i+j=4跳过,所以输出两个1;i=2时,j=1输出2,j=2时跳过,j=3输出2,输出两个2;i=3时,j=1输出3,j=2跳过,j=3输出3,输出两个3。最终“112233”。 3、以下程序段执行后,输出结果中共有 ( ) 个数字。 int i = 1; while (i < 10) { if (i % 3 == 0) { i++; continue; } printf("%d", i); i++; } 【答案】6 【解析】i从1到9,跳过3、6、9,输出1,2,4,5,7,8,共6个数字。 4、以下程序段执行后,sum的值为 ( )。 int i, j, sum = 0; for (i = 0; i < 2; i++) { for (j = 0; j < 2; j++) { if (i == j) continue; sum++; } } 【答案】2 【解析】i=0,j=1时sum++;i=1,j=0时sum++;共2次。 5、以下程序段输出结果为 ( )。 int i = 0, j = 0; while (i < 2) { i++; while (j < 2) { j++; printf("%d%d ", i, j); } } 【答案】11 12 【解析】外层i=0,i++得1,内层j=0,j++得1输出11,j++得2输出12,内层结束;外层第二次i++得2,但此时j已经是2,内层条件j<2为假,内层不再执行,故没有输出。最终输出“11 12”。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 《编程语言基础-C语言》高等教育出版社(第5版) 第四章 循环结构程序设计 章节过关卷(二)(原卷版) 考试时间:90分钟 满分:100分 姓名 班级 学号 一、单项选择题(本题共25小题,每题2分,共50分) 1、以下代码段中,循环体执行的次数是( ) int i = 10; while (i-- > 5) { 循环体 } A. 5 B. 6 C. 10 D. 无限 2、以下代码的输出结果是( ) int x = 0; do { printf("%d ", x); } while (x++ < 2); A. 0 1 2 B. 0 1 C. 0 1 2 3 D. 0 1 2 3 4 3、以下代码段中,循环结束后i的值为( ) int i; for (i = 0; i < 10; i++) { if (i == 5) break; } A. 4 B. 5 C. 6 D. 10 4、以下程序的功能是计算1到100中所有奇数的和,划线处应填( ) int sum = 0, i; for (i = 1; i <= 100; ( )) { sum += i; } A. i++ B. i += 2 C. i = i + 1 D. i =+ 2 5、关于以下代码,说法正确的是( ) int i = 0; while (i < 3) { int j = 0; while (j < 2) { printf("*"); j++; } i++; } A. 输出3个* B. 输出4个* C. 输出6个* D. 输出2个* 6、以下代码的输出结果是( ) int i, j; for (i = 1; i <= 3; i++) { for (j = 1; j <= i; j++) { printf("%d", j); } printf(" "); } A. B.1 C.1 D.1 12 22 12 2 123 333 123 3 7、以下代码的输出结果是( ) int i; for (i = 1; i <= 5; i++) { if (i % 2 == 0) continue; printf("%d", i); } A. 13 B. 24 C. 12345 D. 135 8、以下代码段中,循环体执行的次数是( ) int i = 0; while (i++ < 5) { if (i == 3) continue; 循环语句 } A. 5 B. 4 C. 6 D. 无限 9、以下程序段中,变量sum的最终值是( ) int i, sum = 0; for (i = 1; i <= 4; i++) { if (i == 2) continue; if (i == 3) break; sum += i; } A. 1 B. 3 C. 4 D. 6 10、以下代码的输出结果是( ) int i = 1; do { printf("%d ", i); i++; } while (i <= 1); A. 1 B. 1 2 C. 2 D. 1 2 3 11、以下代码的输出结果是( ) int i, j; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { if (i == j) break; printf("%d%d ", i, j); } } A. 00 01 02 10 11 12 20 21 22 B. 01 02 10 12 20 21 C. 01 02 10 20 D. 01 02 10 20 21 12、关于for循环的表达式,下列说法错误的是( ) A. 表达式1和表达式3可以是逗号表达式 B. 表达式2可以是任意表达式 C. 表达式1、表达式2、表达式3都必须存在 D. 表达式2省略时表示循环条件永远为真 13、以下代码的输出结果是( ) int i = 0; while (++i < 3) { printf("%d", i); } A. 123 B. 12 C. 1 D. 23 14、以下代码的输出结果是( ) int i, s = 0; for (i = 1; i <= 5; i++) { if (i % 2 == 0) continue; s = s + i; } printf("%d", s); A. 6 B. 9 C. 12 D. 15 15、以下程序段中,循环结束后i的值为( ) int i = 0; do { i++; } while (i < 5); A. 4 B. 5 C. 6 D. 0 16、以下代码的输出结果是( ) int i; for (i = 1; i <= 3; i++) { for (int j = 1; j <= 2; j++) { if (i == 2) break; printf("%d", i); } } A. 11 B. 33 C. 1133 D. 1111 17、以下代码的输出结果是( ) int i, j; for (i = 0; i < 2; i++) { for (j = 0; j < 2; j++) { if (i == j) continue; printf("%d%d ", i, j); } } A. 01 10 B. 00 01 10 11 C. 01 10 11 D. 01 18、以下程序用于计算斐波那契数列的前10项,划线处应填( ) int a = 1, b = 1, i; printf("%d %d ", a, b); for (i = 3; i <= 10; i++) { ( ); printf("%d ", a); } A. a = a + b; b = a; B. a = b; b = a + b; C. b = a + b; a = b - a; D. a = a + b; b = a - b; 19、以下代码的输出结果是( ) int i; for (i = 0; i < 5; i++) { if (i == 2) break; if (i == 3) continue; printf("%d", i); } A. 01 B. 012 C. 0134 D. 01 20、以下程序段中,循环结束后n的值为( ) int n = 1234, count = 0; while (n) { count++; n /= 10; } A. 4 B. 5 C. 3 D. 0 21、以下代码的输出结果是( ) int i = 5; while (i) { printf("%d", i); i--; } A. 54321 B. 543210 C. 5 D. 死循环 22、以下代码的输出结果是( ) int i = 1, sum = 0; do { sum += i; i++; } while (i <= 5); printf("%d", sum); A. 15 B. 10 C. 5 D. 0 23、以下代码的输出结果是( ) int i, j; for (i = 1; i <= 3; i++) { for (j = 1; j <= 3; j++) { if (i + j > 4) break; printf("%d%d ", i, j); } } A. 11 12 13 21 22 31 B. 11 12 21 22 31 C. 11 12 21 31 D. 11 12 13 21 22 24、以下代码的输出结果是( ) int i = 0, j = 0; while (i < 3) { j = 0; while (j < 2) { if (i == 1 && j == 1) break; printf("%d%d ", i, j); j++; } i++; } A. 00 01 10 20 21 B. 00 01 10 20 C. 00 01 10 11 20 21 D. 00 01 10 20 21 30 25、以下程序段的功能是( ) int n, m; scanf("%d", &n); m = 0; while (n > 0) { m = m * 10 + n % 10; n /= 10; } printf("%d", m); A. 求n的各位数字之和 B. 求n的位数 C. 将n逆序输出 D. 判断n是否为回文数 二、多选题(本题共5小题,每题4分,共20分) 1、以下关于循环结构的说法,正确的有( ) A. while循环的条件表达式可以是任意类型,非0为真 B. for循环中的表达式1和表达式3都可以是逗号表达式 C. do…while循环的循环体至少执行一次 D. 在循环体内可以改变循环条件表达式的值 2、以下代码段中,可能导致死循环的有( ) A. int i=0; while(i<5) { i--; } B. int i=0; do { i++; } while(i>0); C. for(;;); D. int i=0; while(i<5) { i++; } 3、关于break语句,下列说法正确的有( ) A. 只能用于循环结构 B. 可以用于switch语句 C. 在多重循环中,break只能跳出当前层循环 D. 执行break后,程序继续执行循环外的下一条语句 4、关于continue语句,下列说法正确的有( ) A. 只能用于循环结构 B. 执行continue后,循环体中continue后面的语句不再执行 C. 在while循环中,continue后会直接判断循环条件 D. 在for循环中,continue后会先执行表达式3,再判断表达式2 5、以下程序段中,输出结果相同的选项有( ) A. int i=0; while(i<3) { printf("%d", i); i++; } B. int i=0; do { printf("%d", i); i++; } while(i<3); C. int i; for(i=0;i<3;i++) printf("%d", i); D. int i=0; while(i++<3) printf("%d", i-1); 三、判断题(本题共10小题,每题2分,共20分) 1、while循环的循环体可能一次也不执行。( ) 2、do…while循环的循环体至少执行一次。( ) 3、在for循环中,表达式1、表达式2、表达式3都省略时,循环一次也不执行。( ) 4、break语句只能用在循环体中。( ) 5、continue语句只能用在循环体中。( ) 6、在多重循环中,内层循环的break可以同时退出所有循环。( ) 7、循环体中的语句必须用花括号括起来。( ) 8、在while循环中,循环条件表达式不能是赋值表达式。( ) 9、在do…while循环中,循环体可以一次都不执行。( ) 10、在for循环中,表达式1和表达式3都可以使用逗号运算符连接多个表达式。( ) 四、填空题(本题共5小题,每题2分,共10分) 1、以下程序段输出结果为 ( )。 int i = 0, s = 0; do { s += i; i++; } while (i <= 3); printf("%d", s); 2、以下程序段输出结果为 ( )。 int i, j; for (i = 1; i <= 3; i++) { for (j = 1; j <= 3; j++) { if (i + j == 4) continue; printf("%d", i); } } 3、以下程序段执行后,输出结果中共有 ( ) 个数字。 int i = 1; while (i < 10) { if (i % 3 == 0) { i++; continue; } printf("%d", i); i++; } 4、以下程序段执行后,sum的值为 ( )。 int i, j, sum = 0; for (i = 0; i < 2; i++) { for (j = 0; j < 2; j++) { if (i == j) continue; sum++; } } 5、以下程序段输出结果为 ( )。 int i = 0, j = 0; while (i < 2) { i++; while (j < 2) { j++; printf("%d%d ", i, j); } } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

第四章 循环结构程序设计《编程语言基础-C语言》(高教版第5版)章节过关卷(二)
1
第四章 循环结构程序设计《编程语言基础-C语言》(高教版第5版)章节过关卷(二)
2
第四章 循环结构程序设计《编程语言基础-C语言》(高教版第5版)章节过关卷(二)
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。