内容正文:
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(高教版第2版)一课一练的单元4的第15练,内容涵盖单元4“身高体型判定系统”的决策判定的4.2.6 switch语句与多分支选择结构。
《C语言程序设计》(高教版第2版)一课一练 第15练
单元4 “身高体型判定系统”的决策判定
4.2.6 switch语句与多分支选择结构
1、 单项选择题(本题共5小题)
1、下列选项中,属于 switch 语句合法表达式类型的是( )
A. float浮点型
B. int整型
C. 字符串类型
D. 数组类型
【答案】B
【解析】根据 C 语言 switch 语句规则,switch 后的表达式必须是整型或字符型,浮点型、字符串、数组类型均不符合语法要求,选项 B 正确。
2、执行 switch 语句时,若某 case 分支后未添加break关键字,会出现的情况是( )
A. 程序编译错误
B. 直接跳出 switch 结构
C. 继续执行后续所有 case 分支的语句
D. 自动跳转到 default 分支
【答案】C
【解析】switch 语句的执行逻辑是从匹配的 case 入口开始,依次执行后续所有语句,直到遇到break才跳出 switch;无break时会发生 “贯穿” 现象,继续执行后续 case 的代码,选项 C 正确。
3、关于 switch 语句中 case 标号的描述,正确的是( )
A. 不同 case 后的常量值可以重复
B. case 后的表达式可以是变量
C. 多个 case 标号可以共用同一个执行语句块
D. case 标号必须按从小到大的顺序排列
【答案】C
【解析】多个 case 可以共用同一执行块,如成绩等级案例中case 10:和case 9:共用输出 A 等级的代码,这是 switch 处理多分支的常用方式;case 常量不能重复、必须是常量表达式,顺序无强制要求,选项 C 正确。
4、关于 switch 语句中的default关键字,下列描述正确的是( )
A. default必须放在所有 case 分支的最后
B. default是 switch 语句的必填分支
C. default会匹配所有未被 case 覆盖的情况
D. default只能匹配一个常量值
【答案】C
【解析】default是可选分支,位置可以任意,用于匹配所有未被 case 覆盖的表达式值,无需对应特定常量;它不是必填项,也不强制放在最后,选项 C 正确。
5、使用 switch 语句处理百分制成绩等级时,若输入成绩为 85,执行grade = score/10后,grade的值和对应的 case 分支是( )
A. 8,case 8:
B. 8.5,case 8:
C. 85,case 85:
D. 8,case 9:
【答案】A
【解析】C 语言整数除法中85/10结果为 8,对应case 8:分支(代表 80-89 分的 B 等级),符合成绩等级案例的逻辑,选项 A 正确。
2、 判断题(本题共4题)
1、switch 语句后的表达式可以是double类型的浮点型变量。( )
【答案】×
【解析】C 语言明确规定,switch 的表达式必须是整型或字符型,浮点型无法与 case 后的整型 / 字符型常量匹配,属于非法语法。
2、switch 语句中,每个 case 分支后面必须添加break关键字,否则程序会运行出错。( )
【答案】×
【解析】break是可选关键字,无break只会导致程序执行后续 case 的语句(贯穿现象),不会出现编译或运行错误,合理使用还能实现多分支共用代码的逻辑。
3、switch 语句中的default分支可以省略,当没有匹配的 case 时,程序会直接跳出 switch 结构。( )
【答案】√
【解析】default是可选分支,若没有匹配的 case 且无default,switch 结构会直接结束,不会执行任何分支代码,符合语法规则。
4、多个 case 标号可以共用同一个执行语句块,无需重复编写相同代码。( )
【答案】√
【解析】如成绩等级案例中,case 10:和case 9:共用输出 A 等级的代码,这是 switch 处理同结果多分支的常用合法写法,能简化代码。
3、 程序填空题(本题共1题)
1、题目描述:以下程序用于根据输入的月份(1-12)判断所属季节,春季为 3-5 月,夏季 6-8 月,秋季 9-11 月,冬季为 12、1、2 月,请补充缺失代码;
#include <stdio.h>
int main() {
int month;
printf("请输入月份(1-12)");
scanf("%d", (1));
switch( (2) ) {
case 3:
case 4:
case 5:
printf("%d月属于春季
", month);
(3);
case 6:
case 7:
case 8:
printf("%d月属于夏季
", month);
break;
case 9:
case 10:
case 11:
printf("%d月属于秋季
", month);
break;
(4):
printf("%d月属于冬季
", month);
break;
}
return 0;
}
【答案】
(1)&month
(2)month
(3)break
(4)case 12: case 1: case 2;
【解析】
(1)scanf输入整数时需要传入变量的内存地址,&month获取month的地址,确保输入的月份值能正确存入变量;
(2)switch 的表达式为month,直接用月份变量作为匹配依据,符合 switch 表达式必须为整型的语法规则;
(3)此处添加break,执行完春季的输出语句后立即跳出 switch 结构,避免 “贯穿” 到夏季的输出语句,保证分支逻辑的正确性;
(4)冬季包含 12、1、2 月,通过多个 case 标号共用同一执行块,符合 switch 处理多分支同结果的语法,无需重复编写输出代码。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(高教版第2版)一课一练的单元4的第15练,内容涵盖单元4“身高体型判定系统”的决策判定的4.2.6 switch语句与多分支选择结构。
《C语言程序设计》(高教版第2版)一课一练 第15练
单元4 “身高体型判定系统”的决策判定
4.2.6 switch语句与多分支选择结构
1、 单项选择题(本题共5小题)
1、下列选项中,属于 switch 语句合法表达式类型的是( )
A. float浮点型
B. int整型
C. 字符串类型
D. 数组类型
2、执行 switch 语句时,若某 case 分支后未添加break关键字,会出现的情况是( )
A. 程序编译错误
B. 直接跳出 switch 结构
C. 继续执行后续所有 case 分支的语句
D. 自动跳转到 default 分支
3、关于 switch 语句中 case 标号的描述,正确的是( )
A. 不同 case 后的常量值可以重复
B. case 后的表达式可以是变量
C. 多个 case 标号可以共用同一个执行语句块
D. case 标号必须按从小到大的顺序排列
4、关于 switch 语句中的default关键字,下列描述正确的是( )
A. default必须放在所有 case 分支的最后
B. default是 switch 语句的必填分支
C. default会匹配所有未被 case 覆盖的情况
D. default只能匹配一个常量值
5、使用 switch 语句处理百分制成绩等级时,若输入成绩为 85,执行grade = score/10后,grade的值和对应的 case 分支是( )
A. 8,case 8:
B. 8.5,case 8:
C. 85,case 85:
D. 8,case 9:
2、 判断题(本题共4题)
1、switch 语句后的表达式可以是double类型的浮点型变量。( )
2、switch 语句中,每个 case 分支后面必须添加break关键字,否则程序会运行出错。( )
3、switch 语句中的default分支可以省略,当没有匹配的 case 时,程序会直接跳出 switch 结构。( )
4、多个 case 标号可以共用同一个执行语句块,无需重复编写相同代码。( )
3、 程序填空题(本题共1题)
1、题目描述:以下程序用于根据输入的月份(1-12)判断所属季节,春季为 3-5 月,夏季 6-8 月,秋季 9-11 月,冬季为 12、1、2 月,请补充缺失代码;
#include <stdio.h>
int main() {
int month;
printf("请输入月份(1-12)");
scanf("%d", (1));
switch( (2) ) {
case 3:
case 4:
case 5:
printf("%d月属于春季
", month);
(3);
case 6:
case 7:
case 8:
printf("%d月属于夏季
", month);
break;
case 9:
case 10:
case 11:
printf("%d月属于秋季
", month);
break;
(4):
printf("%d月属于冬季
", month);
break;
}
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$