内容正文:
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(电子工业出版社)一课一练的第4章的第18练,内容涵盖第4章选择结构程序设计的4.4 switch 语句与程序举例。
《C语言程序设计》(电子工业出版社)一课一练 第18练
第4章 选择结构程序设计
4.4 switch 语句与程序举例
1、 单项选择题(本题共4小题)
1、执行以下 switch 语句,输出结果是( )
int num = 2;
switch(num) {
case 1: printf("A");
case 2: printf("B");
case 3: printf("C"); break;
default: printf("D");
}
A. B
B. BC
C. ABC
D. BCD
2、关于 switch 语句的 case 常量表达式,下列说法正确的是( )
A. 可以是变量或表达式
B. 不同 case 的常量值可以重复
C. 必须是确定的常量,且所有 case 常量值互不相同
D. 必须是整数类型
3、在 switch 语句中,default 子句的作用是( )
A. 当没有匹配的 case 时,执行其后的语句组
B. 必须放在所有 case 的最前面
C. 每个 switch 语句必须有且只有一个 default
D. 当所有 case 都匹配时,执行 default 的语句组
4、下列关于 switch 语句中多个 case 共用语句组的写法,正确的是( )
A. case 1,2: printf ("OK"); break;
B. case 1: case 2: printf ("OK"); break;
C. case 1 printf ("OK"); case 2 printf ("OK"); break;
D. case 1||2: printf ("OK"); break;
2、 判断题(本题共3题)
1、switch 语句中的 default 子句是必须存在的,否则程序会出现编译错误。( )
2、在 switch 语句中,各个 case 和 default 的出现次序会影响最终的执行结果。( )
3、case 后面的常量表达式可以是变量或不确定的表达式,比如case a+1:这种写法是合法的。( )
3、 填空题(本题共2题)
1、在 switch 语句中,若某个 case 分支的语句组中没有____语句,程序会从该 case 开始持续执行后续所有分支的语句,直到遇到 break 或 switch 结构结束。
2、某运输公司按距离区间给运费优惠,若用 switch 语句实现,可将距离 s 除以 1000 取整得到区间编号,当 s 在 2000-3999km 时优惠率相同,可使用case 2: ____: discount=8; break;的写法简化代码。
4、 读程序写结果题(本题共1题)
1、阅读下面的 C 语言程序,写出程序运行后的输出结果。
【程序代码】
#include <stdio.h>
int main() {
int profit = 15; // 利润单位:万元
float bonus;
switch(profit/10) {
case 0: bonus = profit * 0.1; break;
case 1: bonus = 10*0.1 + (profit-10)*0.075; break;
default: bonus = 10*0.1 +10*0.075 + (profit-20)*0.05;
}
printf("应发奖金:%.2f万元", bonus);
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(电子工业出版社)一课一练的第4章的第18练,内容涵盖第4章选择结构程序设计的4.4 switch 语句与程序举例。
《C语言程序设计》(电子工业出版社)一课一练 第18练
第4章 选择结构程序设计
4.4 switch 语句与程序举例
1、 单项选择题(本题共4小题)
1、执行以下 switch 语句,输出结果是( )
int num = 2;
switch(num) {
case 1: printf("A");
case 2: printf("B");
case 3: printf("C"); break;
default: printf("D");
}
A. B
B. BC
C. ABC
D. BCD
【答案】B
【解析】num=2 匹配 case2,执行printf("B");,由于该 case 后没有 break 语句,程序会继续执行后续 case3 的语句printf("C");,直到遇到 break 跳出 switch 结构,因此输出 BC。
2、关于 switch 语句的 case 常量表达式,下列说法正确的是( )
A. 可以是变量或表达式
B. 不同 case 的常量值可以重复
C. 必须是确定的常量,且所有 case 常量值互不相同
D. 必须是整数类型
【答案】C
【解析】switch 的 case 后必须是常量表达式,不能是变量;且不同 case 的常量值不能重复,否则会出现逻辑矛盾;常量表达式可以是字符、枚举等多种类型,并非只能是整数。
3、在 switch 语句中,default 子句的作用是( )
A. 当没有匹配的 case 时,执行其后的语句组
B. 必须放在所有 case 的最前面
C. 每个 switch 语句必须有且只有一个 default
D. 当所有 case 都匹配时,执行 default 的语句组
【答案】A
【解析】default 子句用于处理 switch 表达式与所有 case 常量都不匹配的情况,此时会执行 default 后的语句;它可以放在任意位置,也可以省略,并非必须存在。
4、下列关于 switch 语句中多个 case 共用语句组的写法,正确的是( )
A. case 1,2: printf ("OK"); break;
B. case 1: case 2: printf ("OK"); break;
C. case 1 printf ("OK"); case 2 printf ("OK"); break;
D. case 1||2: printf ("OK"); break;
【答案】B
【解析】多个 case 共用同一语句组时,需依次写出每个 case 语句,后面不跟具体操作,直接衔接下一个 case,最终在最后一个 case 后写共用的语句组,这种写法符合 C 语言语法规则。
2、 判断题(本题共3题)
1、switch 语句中的 default 子句是必须存在的,否则程序会出现编译错误。( )
【答案】×
【解析】default 子句是可选的,当没有需要处理的默认情况时,可以省略 default,程序编译运行不受影响,只是没有匹配的 case 时会直接跳出 switch 结构。
2、在 switch 语句中,各个 case 和 default 的出现次序会影响最终的执行结果。( )
【答案】×
【解析】switch 语句是通过表达式的值与 case 常量匹配来执行分支的,与 case 和 default 的书写顺序无关,无论顺序如何,只要值匹配就会执行对应分支。
3、case 后面的常量表达式可以是变量或不确定的表达式,比如case a+1:这种写法是合法的。( )
【答案】×
【解析】case 后面必须是确定的常量表达式,不能是变量或含变量的表达式,否则编译器无法在编译阶段确定其值,会导致编译错误。
3、 填空题(本题共2题)
1、在 switch 语句中,若某个 case 分支的语句组中没有____语句,程序会从该 case 开始持续执行后续所有分支的语句,直到遇到 break 或 switch 结构结束。
【答案】break
【解析】break 语句是 switch 结构中跳出分支的关键,没有它时程序会按顺序执行后续所有 case 和 default 的语句。这一特性既可以用于多个 case 共用逻辑,也需要注意避免意外的连续执行。
2、某运输公司按距离区间给运费优惠,若用 switch 语句实现,可将距离 s 除以 1000 取整得到区间编号,当 s 在 2000-3999km 时优惠率相同,可使用case 2: ____: discount=8; break;的写法简化代码。
【答案】case 3
【解析】当多个 case 对应相同的执行逻辑时,可依次列出这些 case 语句,共用后续的语句组。这样既符合 switch 语句的语法规则,又能减少重复代码的编写。
4、 读程序写结果题(本题共1题)
1、阅读下面的 C 语言程序,写出程序运行后的输出结果。
【程序代码】
#include <stdio.h>
int main() {
int profit = 15; // 利润单位:万元
float bonus;
switch(profit/10) {
case 0: bonus = profit * 0.1; break;
case 1: bonus = 10*0.1 + (profit-10)*0.075; break;
default: bonus = 10*0.1 +10*0.075 + (profit-20)*0.05;
}
printf("应发奖金:%.2f万元", bonus);
return 0;
}
【答案】
程序运行结果:
应发奖金:1.38 万元
【解析】
程序中 profit=15,profit/10的结果为 1,匹配 case1 分支。计算奖金时,10 万元部分按 10% 提成,超出的 5 万元按 7.5% 提成,即 10*0.1 +50.075=1+0.375=1.375,保留两位小数后输出 1.38 万元。执行完 case1 的语句后,break 跳出 switch 结构,程序结束。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$