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

2026-03-25
| 2份
| 14页
| 36人阅读
| 0人下载

资源信息

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

内容正文:

《编程语言基础——C语言》高等教育出版社(第5版) 第二章 分支结构程序设计 章节过关卷(二)(解析版) 考试时间:90分钟 满分:100分 姓名 班级 学号 一、单项选择题(本题共25小题,每题2分,共50分) 1、下列运算符中,优先级最高的是( ) A. == B. && C. ! D. || 【答案】C 【解析】 逻辑非 ! 的优先级为2高于关系运算符(如 ==)和逻辑与/或(&&, ||)。 2、在C语言中,表示“逻辑与”的运算符是( ) A. & B. && C. || D. ! 【答案】B 【解析】 && 是逻辑与;& 是按位与;|| 是逻辑或;! 是逻辑非。 3、若 int a = 5, b = 0;,则表达式 a && b 的值是( ) A. 0 B. 1 C. 5 D. 真 【答案】A 【解析】 逻辑与运算中,只要有一个操作数为0(假),结果即为0。 4、以下if语句写法正确的是( ) A. if {a > b} (...) B. if a > b { ... } C. if (a > b) ... D. if (a > b); { ... } 【答案】C 【解析】 C语言if语句的正确格式为:if(表达式){语句序列},当语句序列只有一条时,可以省略大括号。 5、执行以下代码,输出结果是( ) int x = 10; if (x > 5) printf("A"); else printf("B"); A. A B. B C. AB D. 无输出 【答案】A 【解析】 10 > 5 为真,执行if分支。 6、以下嵌套if语句中,else匹配的是( ) if (a > b) if (c > d) printf("1"); else printf("2"); A. 外层if B. 内层if C. 两者都匹配 D. 编译错误 【答案】B 【解析】 C语言规定else总是与最近的未匹配的if配对。 7、switch语句中,case标签后的表达式必须是( ) A. 变量 B. 浮点常量 C. 整型或字符型常量 D. 字符串 【答案】C 【解析】 switch-case要求case后为整型或字符型常量表达式,不能是变量或浮点数。 8、以下switch代码的输出结果是( ) int k = 1; switch(k) { case 1: k++; printf("A"); case 2: if(k == 2) printf("B"); case 3: printf("C"); break; default: printf("D"); } printf("%d", k);} A. ABC2 B. AB2 C. AC2 D. BC2 【答案】B 【解析】 匹配case 1,由于case 1和case2没有break,会“穿透”执行后续的case 3。 9、用于处理多分支选择且效率较高的语句是( ) A. if-else嵌套 B. switch C. while D. for 【答案】B 【解析】 switch专为多分支设计,在分支较多时通常比if-else链更高效清晰。 10、阅读以下 C 语言代码片段,其最终的输出结果是( ) int a = 5, b = 10, c; c = a > b ? a : b + 1; printf("c = %d", c); } A. c = 5 B. c = 6 C. c = 10 D. c = 11 【答案】D 【解析】 算术运算符 + 的优先级 高于 三元条件运算符 ? :,先计算b+1的值,再计算三元运算表达式的值为11,然后赋值给变量c。 11、x与y的函数关系如下: x y= x<0 x–1 x=0 x x>0 x+1 下面程序段中能正确表示上面关系的是( )。 A.y = x + 1; B.y = x -1; C.if (x < = 0) D.y = x; if (x >=0) if (x ! = 0) if (x< 0) if (x < =0) if (x = = 0) if (x > 0) y = x–1; if (x < 0) y = x; y = x + 1; else y = x; y = x – 1; else y = x–1; else y = x; else y = x+1; else y= x+1; 【答案】C 【解析】 外层if (x <= 0):涵盖了x<0和x=0两种情况。 内层if (x != 0):在x≤0的前提下,如果不等于 0,那必然是x<0。执行y = x - 1。(符合第1条)。 else:在x≤0的前提下,如果等于 0,那就是x=0。执行y = x。(符合第2条) 外层else:对应x>0的情况。执行y = x + 1。(符合第3条) 12、以下程序的运行结果是( )。 main() { int m = 5; if (m ++ > 5) printf("%d ", m); else printf("%d ",m --); } A.4 B.5 C.6 D.7 【答案】C 【解析】 初始m=5,执行if(m++ > 5),先取m的值5进行判断,5>5为假,然后m自增为6。由于条件为假,执行else分支,printf("%d ", m--),此时m的值为6,先输出6,再自减为5。因此输出结果为6。 13、在C语言中,关系运算的结果类型是( ) A. bool B. char C. int D. float 【答案】C 【解析】 C语言没有bool类型,关系运算结果为int型(0或1)。 14、以下代码中,当x=0时输出( ) if (x) printf("Yes"); else printf("No"); A. Yes B. No C. 编译错误 D. 运行错误 【答案】B 【解析】 0视为假,执行else分支。 15、switch语句中,default子句的作用是( ) A. 必须存在 B. 处理未匹配任何case的情况 C. 只能放在最后 D. 可以省略break 【答案】B 【解析】 default是可选的,用于兜底处理所有case都不匹配的情况。 16、逻辑与运算符 && 的短路特性是指( ) A. 左操作数为真时,不计算右操作数 B. 左操作数为假时,不计算右操作数 C. 右操作数为真时,不计算左操作数 D. 左右操作数都必须计算 【答案】B 【解析】 若左操作数为假(0),整个表达式必为假,无需计算右操作数。 17、表达式 5 > 3 > 1 的值是( ) A. 1 B. 0 C. 真 D. 假 【答案】B 【解析】 从左向右结合:(5>3)得1,再计算1>1得0。 18、以下哪个不能用作switch的控制表达式( ) A. char型变量 B. int型变量 C. float型变量 D. enum常量 【答案】C 【解析】 switch不支持浮点类型。 19、若 a=5,执行 if (a = 0) ... 则( ) A. 条件为真 B. 条件为假 C. 编译错误 D. a值不变 【答案】B 【解析】 a=0是赋值表达式,值为0(假),同时a被赋值为0。 20、以下代码片段最终y的值是( ) int x = 3, y; if (x > 2) y = 10; else y = 20; A. 10 B. 20 C. 3 D. 未定义 【答案】A 【解析】 3>2成立,y被赋值为10。 二、多选题(本题共5小题,每题4分,共20分) 1、以下属于关系运算符的是( ) A. > B. <= C. == D. != 【答案】ABCD 【解析】 全部为标准关系运算符。 2、已知 int a=2, b=3;,以下逻辑表达式的值为真的有( ) A. (a++ > 1) && (b++ > 2) B. (--a == 1) || (b += 2) > 4 C. !(a-b) && (a=0) D. (a=0) || (b=5) && (a=1) 答案:A、B、D 解析:A中a++ > 1 先取 a=2 比较,2>1 为真,a 自增为 3;由于逻辑与左边为真,继续计算右边 b++ > 2,取 b=3 比较,3>2 为真,b 自增为 4。整个表达式结果为真(1),a=3, b=4。B中--a 先将 a 减 1 得 1,比较 1 == 1 为真;由于逻辑或左边为真,右边 (b += 2) > 4 被短路(不执行),整个表达式结果为真(1),a=1, b仍为3。C中a-b得-1,!(-1)为0(假),逻辑与左边为假,右边 a=0 不执行,整个表达式结果为假(0),a、b 不变(a=2, b=3)。D中运算符优先级 && 高于 ||,表达式等价于 (a=0) || ( (b=5) && (a=1) )。先计算左边 a=0,赋值为 0,结果为 0;再计算右边 (b=5) && (a=1),先赋b=5(非0),再赋 a=1(非0),逻辑与结果为 1;最后 0 || 1 得真(1)。最终 a=1, b=5。 3、关于if语句,正确的说法是( ) A. 可以没有else部分 B. else必须紧跟在if语句块的后面(中间不能有无关语句) C. if后可以跟复合语句(用{}括起来) D. 条件表达式可以是任意数据类型 【答案】AC 【解析】 B表述不严谨,else应与对应的if逻辑上紧邻,但中间可隔行;D错,条件需为标量类型(数值/指针),且0为假,非0为真。 4、switch语句中,以下说法正确的是( ) A. case标签必须是常量表达式 B. default子句可以省略 C. break语句可防止“穿透”现象 D. 支持浮点数作为case标签值 【答案】ABC 【解析】 D错误,switch不支持浮点类型。 5、假设a,b,c为正,以下表达式中,逻辑上等价于 a > b && a > c 的有( ) A. (a > b)&&(a > c) B. !(a <= b || a <= c) C. a > (b > c ? b : c) D. a > b || a > c 【答案】ABC 【解析】 B利用德摩根定律变换;C先求b,c最大值再比较,逻辑等价;D是“或”关系,不等价。 三、判断题(本题共10小题,每题2分,共20分) 1、在C语言中,字符型数据(char)可以直接参与关系运算和逻辑运算,其本质是将其ASCII码值作为整数处理。( ) 【答案】√ 【解析】 char类型在C语言中本质是小整数。例如 'a' > 'A' 是比较它们的ASCII码值(97 > 65),结果为真。这是分支结构中处理字符判断的基础。 2、表达式 if (a = b) 与 if (a == b) 的功能完全相同,都是判断a和b是否相等。( ) 【答案】× 【解析】 a = b 是赋值表达式,它将b的值赋给a,并以该值作为条件(若b非0则条件为真);a == b 才是比较运算。 3、在switch语句中,多个case标签可以共用同一组执行语句,此时这些case后面都不需要写break,直到最后一组语句后才写break。( ) 【答案】√ 【解析】 这是switch语法的合法用法,常用于处理多个值对应同一种逻辑的情况。利用“穿透”特性实现代码复用。 4、逻辑表达式 (a > b) && (c = d) 中,如果 a > b 的结果为假(0),则变量c不会被赋值为 d。( ) 【答案】√ 【解析】 考察逻辑与 && 的短路特性在副作用上的应用。若左侧为假,右侧表达式根本不会执行,因此 c 的值保持不变。 5、若有定义 int x = 5;,则语句 if (x); printf("Hello"); 中,无论x的值是多少,"Hello" 都会被输出。( ) 【答案】√ 【解析】 if (x); 末尾的分号表示if语句的主体是一个空语句。printf 是if之后的下一条独立语句,不受if条件控制,必然执行。 6、在switch语句中,case后的常量表达式可以是包含变量的表达式。( ) 【答案】× 【解析】 C语言中case标签后必须是整型常量表达式,不能包含变量。 7、表达式 'A' <= ch && ch <= 'Z' 可以正确判断字符变量 ch 是否为大写英文字母。( ) 【答案】√ 【解析】 这是利用ASCII码连续性的经典写法。不能写成 'A' <= ch <= 'Z',因为那样会先算左边得到0或1,再拿0或1去和'Z'比较,逻辑错误。 8、在嵌套if语句中,如果想让else与外层的if配对,必须使用花括号 {} 将内层的if语句块括起来。( ) 【答案】√ 【解析】 默认else匹配最近的if。若要改变匹配对象,必须通过 {} 显式界定内层if的范围,使else“跳过”内层if去匹配外层if。 9、switch语句的控制表达式和case标签都可以是负数。( ) 【答案】√ 【解析】 只要表达式和标签是整型(包括负整数),switch均支持。不仅限于正数或0。 10、逻辑非运算符!作用于一个非零整数时,结果为该整数的相反数。( ) 【答案】× 【解析】 逻辑非 ! 的结果只有两种:若操作数为真(非0),结果为 0;若操作数为假(0),结果为 1。 四、填空题(本题共5小题,每题2分,共10分) 1、阅读以下代码,写出输出结果: int a = 10, b = 20; if (a > b) if (a > 5) printf("A"); else printf("B"); else printf("C"); 【答案】C 【解析】 a > b (10>20) 为假,直接执行外层else,输出"C"。内层if不执行。 2、阅读以下代码,写出输出结果: int n = 2; switch (n) { case 1: printf("A "); case 1 + 1: printf("B "); case 3: printf("C "); break; case 4: printf("D "); break; default: printf("E "); } 【答案】BC 【解析】程序检查switch(n),即switch(2)。case 1: 不匹配。case 1 + 1: 这是一个常量表达式,计算结果为2。匹配成功!进入case 1+1:执行printf("B ");-> 输出"B "。 末尾没有break。发生穿透,程序继续向下执行下一个 case 的代码,不管下一个 case 的条件是否匹配(此时不再进行条件判断)。进入case 3:执行printf("C ");-> 输出"C "。 遇到break;,跳出 Switch。 3、阅读以下代码,写出输出结果: int a = 5, b = 10, c = 15; if (a > b && b > c) printf("OK"); else if (a < b || b < c) printf("YES"); else printf("NO"); 【答案】YES 【解析】 a>b假,&&短路,第一条件假;a<b真,||短路,第二条件真,输出"YES"。 4、阅读以下代码,写出最终 y 的值: int x = 3, y; switch(x) { case 1: y = 10; break; case 2: y = 20; break; case 3: y = 30; case 4: y = 40; break; default: y = 0; } 【答案】40 【解析】 匹配case 3,y=30;无break,穿透执行case 4,y=40;遇到break跳出。 5、阅读以下代码,写出输出结果: int a = 0, b = 5; if (a && (b = 10)) { printf("%d", b); } else { printf("%d", b); } 【答案】5 【解析】 a为0,&&发生短路,(b=10)不执行,b保持原值5。条件为假,执行else,输出5。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 《编程语言基础——C语言》高等教育出版社(第5版) 第二章 分支结构程序设计 章节过关卷(二)(解析版) 考试时间:90分钟 满分:100分 姓名 班级 学号 一、单项选择题(本题共25小题,每题2分,共50分) 1、下列运算符中,优先级最高的是( ) A. == B. && C. ! D. || 2、在C语言中,表示“逻辑与”的运算符是( ) A. & B. && C. || D. ! 3、若 int a = 5, b = 0;,则表达式 a && b 的值是( ) A. 0 B. 1 C. 5 D. 真 4、以下if语句写法正确的是( ) A. if {a > b} (...) B. if a > b { ... } C. if (a > b) ... D. if (a > b); { ... } 5、执行以下代码,输出结果是( ) int x = 10; if (x > 5) printf("A"); else printf("B"); A. A B. B C. AB D. 无输出 6、以下嵌套if语句中,else匹配的是( ) if (a > b) if (c > d) printf("1"); else printf("2"); A. 外层if B. 内层if C. 两者都匹配 D. 编译错误 7、switch语句中,case标签后的表达式必须是( ) A. 变量 B. 浮点常量 C. 整型或字符型常量 D. 字符串 8、以下switch代码的输出结果是( ) int k = 1; switch(k) { case 1: k++; printf("A"); case 2: if(k == 2) printf("B"); case 3: printf("C"); break; default: printf("D"); } printf("%d", k);} A. ABC2 B. AB2 C. AC2 D. BC2 9、用于处理多分支选择且效率较高的语句是( ) A. if-else嵌套 B. switch C. while D. for 10、阅读以下 C 语言代码片段,其最终的输出结果是( ) int a = 5, b = 10, c; c = a > b ? a : b + 1; printf("c = %d", c); } A. c = 5 B. c = 6 C. c = 10 D. c = 11 11、x与y的函数关系如下: x y= x<0 x–1 x=0 x x>0 x+1 下面程序段中能正确表示上面关系的是( )。 A.y = x + 1; B.y = x -1; C.if (x < = 0) D.y = x; if (x >=0) if (x ! = 0) if (x< 0) if (x < =0) if (x = = 0) if (x > 0) y = x–1; if (x < 0) y = x; y = x + 1; else y = x; y = x – 1; else y = x–1; else y = x; else y = x+1; else y= x+1; 12、以下程序的运行结果是( )。 main() { int m = 5; if (m ++ > 5) printf("%d ", m); else printf("%d ",m --); } A.4 B.5 C.6 D.7 13、在C语言中,关系运算的结果类型是( ) A. bool B. char C. int D. float 【答案】C 【解析】 C语言没有bool类型,关系运算结果为int型(0或1)。 14、以下代码中,当x=0时输出( ) if (x) printf("Yes"); else printf("No"); A. Yes B. No C. 编译错误 D. 运行错误 15、switch语句中,default子句的作用是( ) A. 必须存在 B. 处理未匹配任何case的情况 C. 只能放在最后 D. 可以省略break 16、逻辑与运算符 && 的短路特性是指( ) A. 左操作数为真时,不计算右操作数 B. 左操作数为假时,不计算右操作数 C. 右操作数为真时,不计算左操作数 D. 左右操作数都必须计算 17、表达式 5 > 3 > 1 的值是( ) A. 1 B. 0 C. 真 D. 假 18、以下哪个不能用作switch的控制表达式( ) A. char型变量 B. int型变量 C. float型变量 D. enum常量 19、若 a=5,执行 if (a = 0) ... 则( ) A. 条件为真 B. 条件为假 C. 编译错误 D. a值不变 20、以下代码片段最终y的值是( ) int x = 3, y; if (x > 2) y = 10; else y = 20; A. 10 B. 20 C. 3 D. 未定义 二、多选题(本题共5小题,每题4分,共20分) 1、以下属于关系运算符的是( ) A. > B. <= C. == D. != 2、已知 int a=2, b=3;,以下逻辑表达式的值为真的有( ) A. (a++ > 1) && (b++ > 2) B. (--a == 1) || (b += 2) > 4 C. !(a-b) && (a=0) D. (a=0) || (b=5) && (a=1) 3、关于if语句,正确的说法是( ) A. 可以没有else部分 B. else必须紧跟在if语句块的后面(中间不能有无关语句) C. if后可以跟复合语句(用{}括起来) D. 条件表达式可以是任意数据类型 4、switch语句中,以下说法正确的是( ) A. case标签必须是常量表达式 B. default子句可以省略 C. break语句可防止“穿透”现象 D. 支持浮点数作为case标签值 5、假设a,b,c为正,以下表达式中,逻辑上等价于 a > b && a > c 的有( ) A. (a > b)&&(a > c) B. !(a <= b || a <= c) C. a > (b > c ? b : c) D. a > b || a > c 三、判断题(本题共10小题,每题2分,共20分) 1、在C语言中,字符型数据(char)可以直接参与关系运算和逻辑运算,其本质是将其ASCII码值作为整数处理。( ) 2、表达式 if (a = b) 与 if (a == b) 的功能完全相同,都是判断a和b是否相等。( ) 3、在switch语句中,多个case标签可以共用同一组执行语句,此时这些case后面都不需要写break,直到最后一组语句后才写break。( ) 4、逻辑表达式 (a > b) && (c = d) 中,如果 a > b 的结果为假(0),则变量c不会被赋值为 d。( ) 5、若有定义 int x = 5;,则语句 if (x); printf("Hello"); 中,无论x的值是多少,"Hello" 都会被输出。( ) 6、在switch语句中,case后的常量表达式可以是包含变量的表达式。( ) 7、表达式 'A' <= ch && ch <= 'Z' 可以正确判断字符变量 ch 是否为大写英文字母。( ) 8、在嵌套if语句中,如果想让else与外层的if配对,必须使用花括号 {} 将内层的if语句块括起来。( ) 9、switch语句的控制表达式和case标签都可以是负数。( ) 10、逻辑非运算符!作用于一个非零整数时,结果为该整数的相反数。( ) 四、填空题(本题共5小题,每题2分,共10分) 1、阅读以下代码,写出输出结果: int a = 10, b = 20; if (a > b) if (a > 5) printf("A"); else printf("B"); else printf("C"); 2、阅读以下代码,写出输出结果: int n = 2; switch (n) { case 1: printf("A "); case 1 + 1: printf("B "); case 3: printf("C "); break; case 4: printf("D "); break; default: printf("E "); } 3、阅读以下代码,写出输出结果: int a = 5, b = 10, c = 15; if (a > b && b > c) printf("OK"); else if (a < b || b < c) printf("YES"); else printf("NO"); 4、阅读以下代码,写出最终 y 的值: int x = 3, y; switch(x) { case 1: y = 10; break; case 2: y = 20; break; case 3: y = 30; case 4: y = 40; break; default: y = 0; } 5、阅读以下代码,写出输出结果: int a = 0, b = 5; if (a && (b = 10)) { printf("%d", b); } else { printf("%d", b); } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

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