内容正文:
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《C语言》(第五版)《一课一练》第10练,内容是3.2-3.3 if语句嵌套、条件表达式、switch语句。
《C语言》(第五版)一课一练 第10练
3.2-3.3 if语句嵌套、条件表达式、switch语句
一、单选题
1. 关于if语句的嵌套,以下叙述正确的是( )
A. if语句的嵌套层数不能超过2层
B. if语句可以嵌套使用,内层if可以写在另一个if的执行体中
C. else总是与最外层的if配对
D. 嵌套的if语句不能包含else部分
2. 以下关于switch语句的叙述,正确的是( )
A. switch语句中case后面的值必须是整型常量表达式
B. switch语句中case后面的值可以是变量
C. switch语句中可以没有default分支
D. switch的表达式可以是浮点型
3. 设 int a=5, b=3; 则表达式 a > b ? a : b 的值为( )
A. 0
B. 1
C. 5
D. 3
4. 在switch语句中,break的作用是( )
A. 终止整个程序的运行
B. 跳过当前case继续判断下一个case
C. 结束当前循环的本次迭代
D. 终止当前switch语句的执行,跳出switch结构
5. 以下代码段的输出结果是
int x = 3;
if (x > 5)
if (x > 10)
printf("A");
else
printf("B");
else
printf("C");( )
A. A
B. B
C. C
D. BC
6. 以下代码段的输出结果是
int n = 2;
switch (n)
{
case 1: printf("A");
case 2: printf("B");
case 3: printf("C");
default: printf("D");
}( )
A. BCD
B. B
C. BD
D. ABCD
7. 以下与语句 if (a > b) c = a; else c = b; 功能等价的是( )
A. c = a > b ? b : a;
B. if (a > b) c = b; else c = a;
C. c = a > b, a : b;
D. c = a > b ? a : b;
二、简答题
8. 以下程序的运行结果是【 】。
#include <stdio.h>
int main()
{
int x = 15;
switch (x / 10)
{
case 0: printf("E
"); break;
case 1: printf("D
");
case 2: printf("C
"); break;
default: printf("B
");
}
return 0;
}
三、案例分析题
9. 以下程序的功能是:输入一个1到7的整数,输出对应的星期几名称。请填空。
#include <stdio.h>
int main()
{
int day;
scanf("%d", &day);
switch (【1】)
{
case 1: printf("Monday
"); 【2】;
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;
【3】: printf("Input error
"); break;
}
return 0;
}
四、综合应用题
10. 编写一个C程序:从键盘输入一个百分制成绩(0到100的整数),根据分数输出对应的等级。90分及以上为A,80到89分为B,70到79分为C,60到69分为D,60分以下为E。使用switch语句实现。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《C语言》(第五版)《一课一练》第10练,内容是3.2-3.3 if语句嵌套、条件表达式、switch语句。
《C语言》(第五版)一课一练 第10练
3.2-3.3 if语句嵌套、条件表达式、switch语句
一、单选题
1. 关于if语句的嵌套,以下叙述正确的是( )
A. if语句的嵌套层数不能超过2层
B. if语句可以嵌套使用,内层if可以写在另一个if的执行体中
C. else总是与最外层的if配对
D. 嵌套的if语句不能包含else部分
【答案】B
【解析】if语句可以多层嵌套,嵌套层数没有限制,A错误。else与最近的未配对if配对,C错误。嵌套的if可以包含else,D错误。内层if可以写在外层if的执行体中,这是常见的嵌套方式。
2. 以下关于switch语句的叙述,正确的是( )
A. switch语句中case后面的值必须是整型常量表达式
B. switch语句中case后面的值可以是变量
C. switch语句中可以没有default分支
D. switch的表达式可以是浮点型
【答案】A
【解析】case后面的值必须是整型常量表达式,不能是变量与浮点数。switch的表达式也必须是整型与字符型,D错误。虽然可以没有default,但A更准确地描述了语法要求。B错误因为case值不能是变量。
3. 设 int a=5, b=3; 则表达式 a > b ? a : b 的值为( )
A. 0
B. 1
C. 5
D. 3
【答案】C
【解析】条件表达式的一般形式为:表达式1?表达式2:表达式3。当表达式1为真时取表达式2的值,为假时取表达式3的值。a>b即5>3为真,取a的值5。条件表达式在这里的功能是求两个数中的较大值。
4. 在switch语句中,break的作用是( )
A. 终止整个程序的运行
B. 跳过当前case继续判断下一个case
C. 结束当前循环的本次迭代
D. 终止当前switch语句的执行,跳出switch结构
【答案】D
【解析】break在switch中的作用是跳出整个switch结构,不再执行后面的case。如果缺少break,程序会从匹配的case开始顺序执行后面所有case的语句,直到遇到break以及switch结束。C描述的是break在循环中的作用。
5. 以下代码段的输出结果是
int x = 3;
if (x > 5)
if (x > 10)
printf("A");
else
printf("B");
else
printf("C");( )
A. A
B. B
C. C
D. BC
【答案】C
【解析】第一个if判断x>5即3>5不成立,执行外层else输出C。内层if(x>10)和紧接的else都不会被执行,因为外层条件已经为假,程序直接跳到外层else。else与最近的if配对是关键。
6. 以下代码段的输出结果是
int n = 2;
switch (n)
{
case 1: printf("A");
case 2: printf("B");
case 3: printf("C");
default: printf("D");
}( )
A. BCD
B. B
C. BD
D. ABCD
【答案】A
【解析】n的值为2,匹配case 2,输出B。由于case 2后没有break语句,发生穿透现象,继续执行case 3输出C,再执行default输出D。最终输出BCD。这就是switch缺少break时的穿透效果。
7. 以下与语句 if (a > b) c = a; else c = b; 功能等价的是( )
A. c = a > b ? b : a;
B. if (a > b) c = b; else c = a;
C. c = a > b, a : b;
D. c = a > b ? a : b;
【答案】D
【解析】原语句功能为取a和b中的较大值赋给c。条件表达式a>b?a:b当a>b为真时取a为假时取b,与原语句功能完全相同。A选项取的是较小值。B选项把赋值反了。C选项语法错误,缺少问号。正确答案是D。
二、简答题
8. 以下程序的运行结果是【 】。
#include <stdio.h>
int main()
{
int x = 15;
switch (x / 10)
{
case 0: printf("E
"); break;
case 1: printf("D
");
case 2: printf("C
"); break;
default: printf("B
");
}
return 0;
}
【答案】D
C
【解析】x/10即15/10得1,匹配case 1输出D。case 1后面没有break,穿透到case 2输出C。case 2后面有break,跳出switch。因此先输出D再输出C,分两行显示。注意穿透发生在case 1到case 2之间。
三、案例分析题
9. 以下程序的功能是:输入一个1到7的整数,输出对应的星期几名称。请填空。
#include <stdio.h>
int main()
{
int day;
scanf("%d", &day);
switch (【1】)
{
case 1: printf("Monday
"); 【2】;
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;
【3】: printf("Input error
"); break;
}
return 0;
}
【答案】【1】day
【2】break
【3】default
【解析】switch括号中应为要判断的变量day。case 1后面缺少break语句,如果不加break会穿透到case 2输出Tuesday,因此填break。最后一个分支应处理所有不匹配的情况,使用default关键字。default用于处理1到7之外的输入。
四、综合应用题
10. 编写一个C程序:从键盘输入一个百分制成绩(0到100的整数),根据分数输出对应的等级。90分及以上为A,80到89分为B,70到79分为C,60到69分为D,60分以下为E。使用switch语句实现。
【答案】#include <stdio.h>
int main()
{
int score;
scanf("%d", &score);
switch (score / 10)
{
case 10:
case 9: printf("A
"); break;
case 8: printf("B
"); break;
case 7: printf("C
"); break;
case 6: printf("D
"); break;
default: printf("E
"); break;
}
return 0;
}
【解析】利用score/10将分数转换为0到10的整数,作为switch的判断表达式。100分和90到99分除以10都得9和10,case 10穿透到case 9输出A。80到89除以10得8,输出B,依此类推。60分以下除以10得0到5,由default处理输出E。每个case后必须有break防止穿透。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$