内容正文:
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《C语言》(第五版)《一课一练》第11练,内容是3.4 分支结构程序设计综合实例。
《C语言》(第五版)一课一练 第11练
3.4 分支结构程序设计综合实例
一、单选题
1. 以下关于if-else嵌套的叙述,正确的是( )
A. else总是与它上面最近的未配对的if配对
B. else总是与第一个if配对
C. 嵌套的if-else不能超过两层
D. else可以独立使用不需要对应if
2. 在C语言中,实现多条件互斥判断时应该使用的语句是( )
A. 多个独立的if语句
B. 多个并列的switch语句
C. if-else if-else语句
D. 重复使用return语句
3. 设 int x=5; 执行以下代码后输出的结果是
if (x > 10) printf("A");
else if (x > 3) printf("B");
else if (x > 1) printf("C");
else printf("D");( )
A. 输出A
B. 输出C
C. 输出D
D. 输出B
4. 以下代码段中,else与哪个if配对
if (a > 0)
if (b > 0)
printf("1");
else
printf("2");( )
A. 与if(a>0)配对
B. 与两个if都配对
C. 与if(b>0)配对
D. 不与任何if配对
5. 设 int a=3, b=4; 执行以下代码后c的值是
c = 0;
if (a > b) c = 1;
else if (a == b) c = 2;
else c = 3;( )
A. c的值为3
B. c的值为0
C. c的值为2
D. c的值为1
6. 设 int x=15, y=20; 执行以下代码后输出的结果是
if (x > 10)
if (y > 30)
printf("A");
else
printf("B");
else
printf("C");( )
A. 输出A
B. 输出C
C. 无输出
D. 输出B
7. 设 int a=2, b=3, c=1; 执行以下代码后输出的结果是
if (a > b)
if (b > c) printf("X");
else printf("Y");
else printf("Z");( )
A. 输出X
B. 输出Z
C. 输出Y
D. 输出XY
二、简答题
8. 以下程序的运行结果是【 】。
#include <stdio.h>
int main()
{
int x = 8;
if (x > 10)
printf("%d
", x * 2);
else if (x > 5)
printf("%d
", x + 2);
else if (x > 0)
printf("%d
", x - 2);
else
printf("%d
", x);
return 0;
}
三、案例分析题
9. 以下程序的功能是:输入一个整数,判断它是正数、负数还是零,并输出对应信息。请填空。
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
if (【1】)
printf("正数
");
else if (【2】)
printf("负数
");
else
【3】;
return 0;
}
四、综合应用题
10. 编写一个C程序,计算以下分段函数的值并输出:当x<0时,y=2x+1;当0<=x<10时,y=x*x-5;当x>=10时,y=3x-1。从键盘输入x的值,输出y的值。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《C语言》(第五版)《一课一练》第11练,内容是3.4 分支结构程序设计综合实例。
《C语言》(第五版)一课一练 第11练
3.4 分支结构程序设计综合实例
一、单选题
1. 以下关于if-else嵌套的叙述,正确的是( )
A. else总是与它上面最近的未配对的if配对
B. else总是与第一个if配对
C. 嵌套的if-else不能超过两层
D. else可以独立使用不需要对应if
【答案】A
【解析】C语言规定else总是与它上面最近的尚未配对的if进行配对,这就是就近配对原则。else不能单独使用,必须与if成对出现。if-else嵌套层数没有限制。因此A选项正确。
2. 在C语言中,实现多条件互斥判断时应该使用的语句是( )
A. 多个独立的if语句
B. 多个并列的switch语句
C. if-else if-else语句
D. 重复使用return语句
【答案】C
【解析】当需要判断多个互斥条件时,应使用if-else if-else语句,程序会依次检查每个条件,一旦某个条件满足就执行对应分支。多个独立if语句可能同时满足多个条件,不符合互斥需求。switch语句不能直接处理范围判断。因此C选项正确。
3. 设 int x=5; 执行以下代码后输出的结果是
if (x > 10) printf("A");
else if (x > 3) printf("B");
else if (x > 1) printf("C");
else printf("D");( )
A. 输出A
B. 输出C
C. 输出D
D. 输出B
【答案】D
【解析】x的值为5,先判断x>10为假,再判断x>3为真,执行printf输出B。if-else if结构中一旦某个条件满足,后续分支不再判断。因此x>1不会被检查。所以程序输出B。
4. 以下代码段中,else与哪个if配对
if (a > 0)
if (b > 0)
printf("1");
else
printf("2");( )
A. 与if(a>0)配对
B. 与两个if都配对
C. 与if(b>0)配对
D. 不与任何if配对
【答案】C
【解析】根据else的就近配对原则,else与离它最近的未配对if配对。代码中else上方最近的未配对if是if(b>0),所以else与if(b>0)配对。缩进不影响配对关系,编译器按照语法规则确定配对。如果想与if(a>0)配对,需要用花括号改变结构。
5. 设 int a=3, b=4; 执行以下代码后c的值是
c = 0;
if (a > b) c = 1;
else if (a == b) c = 2;
else c = 3;( )
A. c的值为3
B. c的值为0
C. c的值为2
D. c的值为1
【答案】A
【解析】a的值为3,b的值为4,a>b即3>4为假。继续判断a==b即3==4也为假。最后执行else分支,c被赋值为3。if-else if-else结构保证必定执行其中一个分支。所以c的值为3。
6. 设 int x=15, y=20; 执行以下代码后输出的结果是
if (x > 10)
if (y > 30)
printf("A");
else
printf("B");
else
printf("C");( )
A. 输出A
B. 输出C
C. 无输出
D. 输出B
【答案】D
【解析】x>10即15>10为真,进入内层if判断。y>30即20>30为假,执行内层else输出B。内层else与if(y>30)配对,外层else与if(x>10)配对。由于外层if条件已满足,外层else不会执行。所以最终输出B。
7. 设 int a=2, b=3, c=1; 执行以下代码后输出的结果是
if (a > b)
if (b > c) printf("X");
else printf("Y");
else printf("Z");( )
A. 输出X
B. 输出Z
C. 输出Y
D. 输出XY
【答案】B
【解析】a>b即2>3为假,外层if条件不满足,直接执行外层else输出Z。内层if-else在逻辑上属于外层if的分支,外层if条件为假时整个内层结构被跳过。else按照就近原则配对,内层else与if(b>c)配对,外层else与if(a>b)配对。所以程序输出Z。
二、简答题
8. 以下程序的运行结果是【 】。
#include <stdio.h>
int main()
{
int x = 8;
if (x > 10)
printf("%d
", x * 2);
else if (x > 5)
printf("%d
", x + 2);
else if (x > 0)
printf("%d
", x - 2);
else
printf("%d
", x);
return 0;
}
【答案】10
【解析】x的值为8,先判断x>10即8>10为假。再判断x>5即8>5为真,执行printf输出x+2的值即8+2=10。后续x>0的判断不再执行。所以程序输出10。
三、案例分析题
9. 以下程序的功能是:输入一个整数,判断它是正数、负数还是零,并输出对应信息。请填空。
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
if (【1】)
printf("正数
");
else if (【2】)
printf("负数
");
else
【3】;
return 0;
}
【答案】【1】n > 0
【2】n < 0
【3】printf("零
")
【解析】程序需要判断n是正数、负数还是零三种情况。第一个条件判断n是否为正数,填n>0。第二个条件判断n是否为负数,填n<0。当前两个条件都不满足时n为零,输出零的信息,填printf("零\
")。三个分支覆盖了所有可能情况。
四、综合应用题
10. 编写一个C程序,计算以下分段函数的值并输出:当x<0时,y=2x+1;当0<=x<10时,y=x*x-5;当x>=10时,y=3x-1。从键盘输入x的值,输出y的值。
【答案】#include <stdio.h>
int main()
{
int x, y;
scanf("%d", &x);
if (x < 0)
y = 2 * x + 1;
else if (x < 10)
y = x * x - 5;
else
y = 3 * x - 1;
printf("%d
", y);
return 0;
}
【解析】分段函数有三个区间需要处理。x<0时y=2x+1,0<=x<10时y=x*x-5,x>=10时y=3x-1。使用if-else if-else结构,第一个条件判断x<0,第二个条件判断x<10(因为else已经隐含x>=0),剩余情况为x>=10。这样三个分支分别对应三个区间。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$