内容正文:
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《编程语言基础——C语言》(第5版)《一课一练》第11练,内容是3.3 switch语句 3.4 分支结构程序设计实例。
《编程语言基础——C语言》(第5版)一课一练 第11练
3.3 switch语句 3.4 分支结构程序设计实例
一、单选题
1. C语言中switch语句的一般形式中,switch后面括号中的表达式类型可以是( )
A. 整型表达式、字符型表达式
B. 浮点型表达式
C. 任意类型的表达式
D. 字符串表达式
2. 在switch语句中,break语句的作用是( )
A. 结束整个程序的运行
B. 跳出switch结构,执行switch后面的语句
C. 跳过当前case,继续执行下一个case
D. 返回switch开头重新判断
3. 对于以下程序段,说法正确的是:float f=2.5; switch(f) { case 2.5: ... }( )
A. 程序正确,switch可以使用float类型
B. 程序正确,但case标号需要改为整型
C. 程序错误,switch后的表达式不能是浮点型
D. 程序正确,case标号可以是浮点数
4. 关于switch语句中case标号,以下说法正确的是( )
A. case标号可以是变量
B. 多个case标号的值可以相同
C. case后面必须跟单条语句
D. case标号必须是整型常量、整型常量表达式
5. 以下switch语句段中,当grade='A'时,输出的内容是:
switch(grade) {
case 'A':
case 'B': printf("合格"); break;
case 'C': printf("待定"); break;
}( )
A. 合格
B. 合格待定
C. 无输出
D. A
6. 设int x=1, y=0, a=0, b=0; 执行以下程序段后a和b的值分别是:
switch(x) {
case 1: switch(y) {
case 0: a++; break;
case 1: b++; break;
}
case 2: a++; b++; break;
}( )
A. a=1, b=0
B. a=2, b=1
C. a=1, b=1
D. a=2, b=0
7. 在C语言中,对于多分支选择的处理,以下关于if与switch的说法正确的是( )
A. switch可以替代所有if语句
B. if语句可以判断浮点数相等,switch也可以
C. switch适用于基于整型、字符型常量值的多分支选择
D. switch语句中各case的执行顺序是随机的
二、程序运行结果题
8. 以下程序的运行结果是【··】。
#include <stdio.h>
int main()
{
int n = 2;
switch (n)
{
case 1: printf("A");
case 2: printf("B");
case 3: printf("C"); break;
default: printf("D");
}
return 0;
}
三、程序填空题
9. 以下程序的功能是输入一个1~7之间的整数,输出对应的星期英文单词(1→Monday, 2→Tuesday, ... 7→Sunday)。请填空。
#include <stdio.h>
int main()
{
int day;
printf("请输入1-7之间的整数:");
scanf("%d", &day);
【1】(day)
{
case 1: printf("Monday
"); break;
case 2: printf("Tuesday
"); break;
case 3: printf("Wednesday
"); break;
case 4: printf("Thursday
"); break;
case 5: printf("Friday
"); break;
case 6: printf("Saturday
"); break;
case 7: printf("Sunday
"); break;
【2】: printf("输入错误
");
}
return 0;
}
四、阅读程序改错题
10. 阅读以下程序,该程序的功能是根据成绩等级(A/B/C/D)输出对应评语。程序中有两处错误,请指出错误所在行号并修改正确,不许增删行,在原行上修改。
L1 #include <stdio.h>
L2 int main()
L3 {
L4 char grade;
L5 printf("请输入成绩等级:");
L6 scanf("%c", &grade);
L7 switch(grade)
L8 {
L9 case A: printf("优秀
"); break;
L10 case 'B': printf("良好
") break;
L11 case 'C': printf("及格
"); break;
L12 case 'D': printf("不及格
"); break;
L13 }
L14 return 0;
L15 }
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《编程语言基础——C语言》(第5版)《一课一练》第11练,内容是3.3 switch语句 3.4 分支结构程序设计实例。
《编程语言基础——C语言》(第5版)一课一练 第11练
3.3 switch语句 3.4 分支结构程序设计实例
一、单选题
1. C语言中switch语句的一般形式中,switch后面括号中的表达式类型可以是( )
A. 整型表达式、字符型表达式
B. 浮点型表达式
C. 任意类型的表达式
D. 字符串表达式
【答案】A
【解析】switch后的表达式通常为整型表达式、字符型表达式,不能是浮点型。case标号也必须是整型常量、字符常量。
2. 在switch语句中,break语句的作用是( )
A. 结束整个程序的运行
B. 跳出switch结构,执行switch后面的语句
C. 跳过当前case,继续执行下一个case
D. 返回switch开头重新判断
【答案】B
【解析】break语句在switch中的作用是跳出switch结构,转而执行switch结构后面的第一条语句。如果没有break,程序会继续执行下一个case的语句(穿透现象)。
3. 对于以下程序段,说法正确的是:float f=2.5; switch(f) { case 2.5: ... }( )
A. 程序正确,switch可以使用float类型
B. 程序正确,但case标号需要改为整型
C. 程序错误,switch后的表达式不能是浮点型
D. 程序正确,case标号可以是浮点数
【答案】C
【解析】switch后的表达式类型不能是浮点型(float/double),须为整型(int/char/short/long等)、枚举类型。浮点型存在精度问题,不适合精确匹配。
4. 关于switch语句中case标号,以下说法正确的是( )
A. case标号可以是变量
B. 多个case标号的值可以相同
C. case后面必须跟单条语句
D. case标号必须是整型常量、整型常量表达式
【答案】D
【解析】case标号必须是整型常量、整型常量表达式,不能是变量;各case标号的值必须互不相同;case后面可以跟多条语句,会依次执行直到遇到break。
5. 以下switch语句段中,当grade='A'时,输出的内容是:
switch(grade) {
case 'A':
case 'B': printf("合格"); break;
case 'C': printf("待定"); break;
}( )
A. 合格
B. 合格待定
C. 无输出
D. A
【答案】A
【解析】当grade='A'时,程序从case 'A'进入,由于case 'A'后面没有break语句,程序继续执行case 'B'后的语句printf("合格"),遇到break后跳出switch。这是多个case共用一组语句的典型用法。
6. 设int x=1, y=0, a=0, b=0; 执行以下程序段后a和b的值分别是:
switch(x) {
case 1: switch(y) {
case 0: a++; break;
case 1: b++; break;
}
case 2: a++; b++; break;
}( )
A. a=1, b=0
B. a=2, b=1
C. a=1, b=1
D. a=2, b=0
【答案】B
【解析】x=1进入外层case 1,y=0进入内层case 0执行a++(a=1)然后break跳出内层switch。外层case 1后没有break,继续执行case 2:a++(a=2), b++(b=1), break跳出。最终a=2, b=1。
7. 在C语言中,对于多分支选择的处理,以下关于if与switch的说法正确的是( )
A. switch可以替代所有if语句
B. if语句可以判断浮点数相等,switch也可以
C. switch适用于基于整型、字符型常量值的多分支选择
D. switch语句中各case的执行顺序是随机的
【答案】C
【解析】switch适用于基于整型、字符型常量值的离散多分支选择,结构清晰。if语句更灵活,可以判断范围(如x>10)、浮点数、复杂逻辑表达式等,这些是switch无法替代的。
二、程序运行结果题
8. 以下程序的运行结果是【··】。
#include <stdio.h>
int main()
{
int n = 2;
switch (n)
{
case 1: printf("A");
case 2: printf("B");
case 3: printf("C"); break;
default: printf("D");
}
return 0;
}
【答案】BC
【解析】n=2,匹配case 2,执行printf("B")输出B。case 2后无break,穿透到case 3执行printf("C")输出C,遇到break跳出switch。最终输出BC。
三、程序填空题
9. 以下程序的功能是输入一个1~7之间的整数,输出对应的星期英文单词(1→Monday, 2→Tuesday, ... 7→Sunday)。请填空。
#include <stdio.h>
int main()
{
int day;
printf("请输入1-7之间的整数:");
scanf("%d", &day);
【1】(day)
{
case 1: printf("Monday
"); break;
case 2: printf("Tuesday
"); break;
case 3: printf("Wednesday
"); break;
case 4: printf("Thursday
"); break;
case 5: printf("Friday
"); break;
case 6: printf("Saturday
"); break;
case 7: printf("Sunday
"); break;
【2】: printf("输入错误
");
}
return 0;
}
【答案】【1】switch
【2】default
【解析】程序使用switch语句实现多分支选择。【1】填入switch关键字,构成switch(day)的形式。【2】填入default,处理输入不在1~7范围内的情况。
四、阅读程序改错题
10. 阅读以下程序,该程序的功能是根据成绩等级(A/B/C/D)输出对应评语。程序中有两处错误,请指出错误所在行号并修改正确,不许增删行,在原行上修改。
L1 #include <stdio.h>
L2 int main()
L3 {
L4 char grade;
L5 printf("请输入成绩等级:");
L6 scanf("%c", &grade);
L7 switch(grade)
L8 {
L9 case A: printf("优秀
"); break;
L10 case 'B': printf("良好
") break;
L11 case 'C': printf("及格
"); break;
L12 case 'D': printf("不及格
"); break;
L13 }
L14 return 0;
L15 }
【答案】【1】L9: case A → 修改为 case 'A'
【2】L10: printf("良好
") break → 修改为 printf("良好
"); break(补充分号)
【解析】第一处错误:L9的case A中A未加单引号,会被当作变量名而非字符常量,应改为case 'A'。第二处错误:L10中printf语句末尾缺少分号,导致语法错误,应补上分号。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$