内容正文:
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《C语言》(第五版)《一课一练》第12练,内容是第3章 分支结构程序设计综合。
《C语言》(第五版)一课一练 第12练
第3章 分支结构程序设计综合
一、单选题
1. 以下关于C语言逻辑运算符的叙述,正确的是( )
A. 逻辑运算符的优先级高于关系运算符
B. ||运算符表示两边都为真时结果才为1
C. 逻辑与运算符&&的两边都为真时结果为1
D. 逻辑非运算符!可以作用于任何表达式
【答案】C
【解析】逻辑与运算符&&要求两边都为真时结果为1,C选项正确。逻辑运算符优先级低于关系运算符,A选项错误。||运算符有一边为真时结果就为1,B选项错误。!运算符作用于表达式得到逻辑值,不是任何表达式都能直接作为!的操作数来改变原值,D选项表述不严谨。
2. 以下if语句格式正确的是( )
A. if (x > 0) then printf("正数");
B. if x > 0 printf("正数");
C. if [x > 0] printf("正数");
D. if (x > 0) printf("正数");
【答案】D
【解析】C语言if语句的条件必须用圆括号括起来,不需要then关键字。D选项格式正确,条件用圆括号括起。A选项使用了then关键字,这是Pascal语法。B选项缺少圆括号。C选项使用了方括号而非圆括号。
3. 设 int x=2; 执行以下代码后输出的结果是
switch(x) {
case 1: printf("A"); break;
case 2: printf("B");
case 3: printf("C"); break;
default: printf("D");
}( )
A. 输出B
B. 输出BD
C. 输出BC
D. 输出BCD
【答案】C
【解析】x的值为2,匹配case 2,输出B。由于case 2后面没有break语句,程序继续执行case 3,输出C。case 3后面有break,跳出switch结构。所以输出BC。缺少break会导致继续执行后续case,这称为穿透现象。
4. 设 int a=5, b=3; 则表达式 a > b ? a : b 的值为( )
A. 5
B. 3
C. 0
D. 8
【答案】A
【解析】条件表达式a>b?a:b先判断a>b即5>3为真,整个表达式的值为问号后面的a,即5。条件运算符?:是C语言中唯一的三目运算符。当条件为真时取冒号前面的值,为假时取冒号后面的值。
5. 设 int x=10; 执行以下代码后y的值是
y = (x > 5) ? (x > 15 ? 1 : 2) : 3;( )
A. y的值为1
B. y的值为3
C. y的值为10
D. y的值为2
【答案】D
【解析】先判断外层条件x>5即10>5为真,需要计算x>15?1:2。x>15即10>15为假,取值2。所以y的值为2。嵌套条件表达式从外向内逐层求值。
6. 设 int x=5, y=0; 执行以下代码后y的值是
switch(x) {
case 1: y = 10; break;
case 5: y = 20;
case 10: y = y + 30; break;
default: y = 40;
}( )
A. y的值为20
B. y的值为50
C. y的值为30
D. y的值为40
【答案】B
【解析】x值为5,匹配case 5,y赋值为20。case 5后面没有break,继续执行case 10,y=20+30=50。case 10后面有break跳出switch。如果没有穿透,y应该为20,但因为缺少break导致继续执行。所以y的值为50。
7. 设 char grade='B'; 执行以下代码后输出的结果是
switch(grade) {
case 'A': printf("优秀"); break;
case 'B': printf("良好");
case 'C': printf("及格"); break;
default: printf("不及格");
}( )
A. 输出"良好及格"
B. 输出"良好"
C. 输出"及格"
D. 输出"优秀及格"
【答案】A
【解析】grade的值为'B',匹配case 'B',输出"良好"。case 'B'后面没有break,继续执行case 'C',输出"及格"。case 'C'后面有break跳出switch。因此最终输出"良好及格"。穿透现象使得连续输出两个信息。
二、简答题
8. 以下程序的运行结果是【 】。
#include <stdio.h>
int main()
{
int x = 3;
switch (x)
{
case 1: printf("A"); break;
case 2: printf("B"); break;
case 3:
if (x > 2) printf("C");
else printf("D");
break;
default: printf("E");
}
return 0;
}
【答案】C
【解析】x的值为3,匹配case 3。进入case 3后执行if(x>2),3>2为真,输出C。然后遇到break跳出switch。所以程序输出C。switch的case分支中可以包含if语句进行进一步判断。
三、案例分析题
9. 以下程序的功能是:输入一个百分制成绩,输出对应的等级。90分及以上为A,80到89为B,60到79为C,60分以下为D。请填空。
#include <stdio.h>
int main()
{
int score;
scanf("%d", &score);
switch (【1】)
{
case 10:
case 9: printf("A"); break;
case 8: printf("B"); break;
case 7:
case 6: 【2】
default: 【3】
}
return 0;
}
【答案】【1】score / 10
【2】printf("C"); break;
【3】printf("D"); break;
【解析】switch语句需要将成绩转换为等级,用score/10将百分制成绩转换为十位数。90分及以上score/10为9和10,对应case 10和case 9输出A。80到89分score/10为8,对应case 8输出B。60到79分score/10为6和7,输出C,填printf("C");break;。default处理60分以下,输出D。
四、综合应用题
10. 编写一个C程序:从键盘输入一个百分制成绩(整数),输出对应等级。90分及以上为A,80到89分为B,60到79分为C,60分以下为D。
【答案】#include <stdio.h>
int main()
{
int score;
scanf("%d", &score);
if (score >= 90)
printf("A
");
else if (score >= 80)
printf("B
");
else if (score >= 60)
printf("C
");
else
printf("D
");
return 0;
}
【解析】使用if-else if-else结构按成绩从高到低依次判断。先判断是否大于等于90输出A,再判断是否大于等于80输出B,再判断是否大于等于60输出C,剩余情况输出D。判断顺序必须从高分到低分,否则无法正确分类。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《C语言》(第五版)《一课一练》第12练,内容是第3章 分支结构程序设计综合。
《C语言》(第五版)一课一练 第12练
第3章 分支结构程序设计综合
一、单选题
1. 以下关于C语言逻辑运算符的叙述,正确的是( )
A. 逻辑运算符的优先级高于关系运算符
B. ||运算符表示两边都为真时结果才为1
C. 逻辑与运算符&&的两边都为真时结果为1
D. 逻辑非运算符!可以作用于任何表达式
2. 以下if语句格式正确的是( )
A. if (x > 0) then printf("正数");
B. if x > 0 printf("正数");
C. if [x > 0] printf("正数");
D. if (x > 0) printf("正数");
3. 设 int x=2; 执行以下代码后输出的结果是
switch(x) {
case 1: printf("A"); break;
case 2: printf("B");
case 3: printf("C"); break;
default: printf("D");
}( )
A. 输出B
B. 输出BD
C. 输出BC
D. 输出BCD
4. 设 int a=5, b=3; 则表达式 a > b ? a : b 的值为( )
A. 5
B. 3
C. 0
D. 8
5. 设 int x=10; 执行以下代码后y的值是
y = (x > 5) ? (x > 15 ? 1 : 2) : 3;( )
A. y的值为1
B. y的值为3
C. y的值为10
D. y的值为2
6. 设 int x=5, y=0; 执行以下代码后y的值是
switch(x) {
case 1: y = 10; break;
case 5: y = 20;
case 10: y = y + 30; break;
default: y = 40;
}( )
A. y的值为20
B. y的值为50
C. y的值为30
D. y的值为40
7. 设 char grade='B'; 执行以下代码后输出的结果是
switch(grade) {
case 'A': printf("优秀"); break;
case 'B': printf("良好");
case 'C': printf("及格"); break;
default: printf("不及格");
}( )
A. 输出"良好及格"
B. 输出"良好"
C. 输出"及格"
D. 输出"优秀及格"
二、简答题
8. 以下程序的运行结果是【 】。
#include <stdio.h>
int main()
{
int x = 3;
switch (x)
{
case 1: printf("A"); break;
case 2: printf("B"); break;
case 3:
if (x > 2) printf("C");
else printf("D");
break;
default: printf("E");
}
return 0;
}
三、案例分析题
9. 以下程序的功能是:输入一个百分制成绩,输出对应的等级。90分及以上为A,80到89为B,60到79为C,60分以下为D。请填空。
#include <stdio.h>
int main()
{
int score;
scanf("%d", &score);
switch (【1】)
{
case 10:
case 9: printf("A"); break;
case 8: printf("B"); break;
case 7:
case 6: 【2】
default: 【3】
}
return 0;
}
四、综合应用题
10. 编写一个C程序:从键盘输入一个百分制成绩(整数),输出对应等级。90分及以上为A,80到89分为B,60到79分为C,60分以下为D。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$