C语言 选择结构

一.选择结构

1. 单分支选择结构
2. 双分支选择结构
3. 多分支选择结构

1. 单分支选择结构
1.1何为单分支选择结构?
从开始到结束之间只有一条路可供选择。
1.2何为双分支结构?
从开始到结束之间有两条路可供选择。
1.3何为多分支结构
从开始到结束之间有三条及三条以上的路可供选择。

**接招看题004.**用单分支选择结构的条件语句编程,计算并输出两个整数的最大值
在这里插入图片描述

2. 双分支选择结构
2.1 如何使用双分支控制条件的语句?

if(表达式P) 语句1
else 语句2
使用if-else流程是:如果表达式P的值为真,就执行语句1,否则就执行语句2.

知识补丁

if-else语句跟简单的if语句的区别是?
使用简单的if语句,可供的选择是:要么执行一条语句;要么就不执行,跳过它。而if-else 语句可供的选择是:在两条语句中选择其中的一条来执行。
接题看招005:用双分支控制条件的语句编程,计算并输出两个整数的最大值。**
在这里插入图片描述
知识拓展:条件运算符和条件表达式
1.何为条件运算符?(关于条件运算符知多少?)
条件运算符是C语言中的唯一一个三元运算符,即参与运算时需要三个操作数。比如通过加减乘除运算符,将X,Y,Z(任意三个变量)进行相关的运算。
2.条件运算符跟if-else有何区别?
由条件运算符构成的条件表达式,会使程序变得更加简单,直观。
接招看题006:用条件运算符编程,计算并输出两个整数的最大值

在这里插入图片描述

知识补丁::

1. 记住这句话:程序是解决问题的一种算法。是使用代码(字符)来实现的。
因此,解题前,我们首先要知道解决问题的算法是什么,然后将算法转换成代码(字符)
本题算法:首先通过关系运算符,比较两个数的关系,即谁大谁小?
然后将最大值赋值给变量max,或者说将最大值存于变量max中。*
2.何为条件表达式?
表达式1?表达式2:表达式3
讲解说明:当表达式1的值为真,那么将表达式2的结果赋值给表达式1,否则将表达式3的结果赋值给表达式1.
现在讲解接招看题006是如何使用条件表达式的。
max=a>b?a:b;//注意运算符的优先级
运算符的优先级顺序,记住五个字:非术关逻赋。
非,!。优先级第一。最大。这是校长。
术,算数运算符,+,-,*,/,%。优先级第二。这是院长。
关,>,>=,<,<=,==,!=。优先级第三。这是班主任。
其中,>,>=,<,<=,四个关系运算符的优先级 要大于 ==,!=这两个关系运算符。
逻,!,&&,||。优先级第四。这是班长。
赋,=。优先级第五。最小。这是组长。

知识补丁:

这些专业知识你只需有个大概的了解就行,不需要死记硬背。只需要在用的过程中,你知道知识在哪儿,并且会用(当然少不了动手练习喽),就OK了。互联网时代,记忆交给存储器(U盘,云盘,移动硬盘),分析理解交给大脑(CPU)。

3. 多分支选择结构
3.1多分支选择结构
即else-if形式的条件语句。如下:
if(表达式1) 语句1
else if (表达式2) 语句2
else if (表达式n) 语句n
else 语句n+1
多分支选择结构流程图如下:
在这里插入图片描述

知识补丁:

条件语句语法规定,每个条件分支只能带一条语句。(这个缺点就产生了复合语句)但是实际中条件分支里往往会有多条语句才能完成这时就需要{}括起来。
知识总结归纳:
1.何为条件语句的三种形式?分别是怎么用的?
第一种单分支—if(表达式P) 语句A
第二种双分支—if(表达式P) 语句A
else 语句B
第三种多分支—if(表达式1) 语句1
else if(表达式2) 语句2
else if(表达式n) 语句n
else 语句n+1

2.何为复合语句?
用{}括起来的语句叫复合语句。
例如,max=a;
printf(“max=%d”,a);
以上为两条语句。但是若用{}括起来,就是一条复合语句。(复合语句是一个整体,可看作一条语句。)例如:
{
max=a;
printf(“max=%d”,a);
}
3.2用于多路选择的switch语句
使用条件:多分支选择。
举例:分类统计学生成绩;90分以上为A,80-90分之间为B;60-70分之间为C。常用于分类统计,菜单等问题。

语句格式:
switch(表达式)
{case 常量表达式1:语句1;break;
case 常量表达式2:语句2;break;
case 常量表达式3:语句3;break;
*
*
*(至少有3个分支)
case 常量表达式n:语句n;break;
default: 语句n+1;
}

switch语句执行规律


首先计算表达式的值,并逐个与其后的常量表达式相比较,如果表达式的值与某个常量表达式的值相等,即执行该常量表达式后的语句;如果没有找到与表达式匹配的常量表达式,则执行defualt 语句。

知识补丁:

(1)在switch语句中,“case常量表达式”相当于一个语句标号,表达式的值和某标号相等就执行该标号后的语句,碰到break跳出本层switch。
(2)switch括号内表达式的值和case后面的常量的表达式的值只能是整型或字符型。读者注意记忆重点知识。
(3)同一个switch语句中,case后的各常量表达式的值不能相同。
(4)在case后允许有多个语句,可以不用{}括起来。
(5)各case和default语句的先后顺序可以变动,不会影响程序运行的结果。
(6)在需要用switch语句选择关系型运行条件的时候,应先用if进行判断。
接招看题007:从键盘接受一个数字,输出对应的星期几的英文单词。

没有break的结果
有break的结果

深入理解break和continue语句:

(1)结合接招看题007进行理解。注意没有break和有break的效果(这就是理解)
当case常量表达式没有break结尾,会导致连续输出case后面语句里的字符串。加上break结尾,会直接跳出本层switch,好处是避免输出不应有的结果。(显然连续输出不是我们想要的输出结果。我们想要的结果是“一对一”的逻辑关系,1—monday,7—sunday,而不是1—monday****fridaysunday)
(2)因为continue语句只用在for,while,do-while等循环体中,所以在后续循环结构会涉及到。

switch与if的比较

if语句只有2个分支—是 和 否;而switch语句至少有3个分支。

  • 10
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码写注释

请赞赏我

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值