C语言零基础速通——选择结构(6分钟搞懂)

本文详细介绍了C语言中的选择语句,包括if单分支、if-else双分支、if-elseif-else多分支和switch语句,以及条件运算符的使用。讲解了各语句的形式、执行流程,并通过实例代码展示了其工作原理。此外,还提及了break在switch语句中的作用,帮助读者理解如何实现真正的多选一。最后,提到了条件运算符的优先级和用法。
摘要由CSDN通过智能技术生成

这章直接直观列举常用选择语句,可归类为单分支双分支、多分支。


1.if语句

(单分支即单条判断语句


形式1:只有一条语句(也可如形式2加括号)

if(表达式)  语句1;  语句n;//非if控制的语句

形式2:有多条语句

if(表达式){  语句1;  语句2;   ...;}语句n;//非if控制的语句

若表达式为“真”,执行括号内语句(或形式1中的一条语句1);

若表达式为“假”,跳过if控制的语句执行语句n;


2.if- else语句

(双分支即二选一



形式1: 单条语句(与else与if语句同)

if(表达式)  语句1;else  语句2;  语句n;//非if-else控制的语句

形式2: 多条语句(与else与if语句同)

if(表达式){  语句1;  语句2;   ...;}else{  语句3;  语句4;   ...;}语句n;//非if控制的语句

若表达式为“真”,执行括号内语句(或形式1中的一条语句1),跳过else控制的语句,执行语句n;

若表达式为“假”,跳过if控制的语句执行else控制的语句,后执行语句n;


3.if- else if-else语句

(多分支即多选一


形式:

if(表达式1)  语句1;else if(表达式2)  语句2;else if(表达式3)  语句3;...else if(表达式n)  语句n;else   语句n+1;语句 n+2;

作用即为多选一。

依次判断表达式1、2、3、...为真,若为表达式x为真,执行相应语句x,后直接执行语句n+2;

若n个表达式均为假,执行语句n+1后执行语句n+2。

eg.

#include <stdio.h>main(){int a,n;if(n==1)  a=1;else if(n==2)  a=2;else if(n==3)  a=3;...else if(n==10)  a=10;else   语句a=11;printf("a=%d",a);}

若输入n=3,则输出“a=3”

若输入n=12,则输出“a=11”

(可以运行体验一下)


4.switch语句

(多分支即多选一


形式:

switch(表达式){  case 常量1:        语句组1;  case 常量2:        语句组2;   ...   case 常量n:         语句组n;   default:         语句组n+1;}语句n+2;

tips:

  1. default 与其语句组n+1 和if-else结构中的else 与其语句组一样,可省略。

  2. 表达式为字符型或整型!

  3. 若为以上形式,表达式等于常量2时,执行语句如下:

    语句组2➡️语句组3➡️...➡️语句组n+1➡️语句n+2

    即找到匹配项后接下来的语句会统统执行(常考点),这就违背了多选一,就此,我们引入一个一个新东西,叫“break”

  4. 实现真正的多选一的形式

switch(表达式){  case 常量1:        语句组1;        break;  case 常量2:        语句组2;        break;   ...   case 常量n:         语句组n;         break;}语句n+1;

在每个case控制的语句组后加“break”就可以实现

"break"作用具体会在下一章介绍,它主要用在循环和switch语句中

在此,先初步了解,当遇到break时,程序会跳出switch语句,执行语句n+1

同样的:

若为以上形式,表达式等于常量2时,执行语句如下:

语句组2➡️语句n+2

举个例子方便体验:

#include <stdio.h>main(){int i;scanf("%d",&i);//注意有“&”!  switch(i)//注意没有“;”!  {     case 1: printf("星期一\n"); break;     case 2: printf("星期二\n"); break;     case 3: printf("星期三\n"); break;     case 4: printf("星期四\n"); break;     case 5: printf("星期五\n"); break;     case 6: printf("星期六\n"); break;     case 7: printf("星期日\n"); break;    }    }

tips: 同学们也可以尝试着把break删掉,看看有什么结果,代码如下

#include <stdio.h>main(){int i;scanf("%d",&i);//注意有“&”!  switch(i)//注意没有“;”!  {     case 1: printf("星期一\n");      case 2: printf("星期二\n");      case 3: printf("星期三\n");      case 4: printf("星期四\n");      case 5: printf("星期五\n");      case 6: printf("星期六\n");      case 7: printf("星期日\n");     }    }

5.条件运算


形式:

表达式1 ? 表达式2 : 表达式3

其中“?”,“:” 为条件运算符

表达式1为真(1),则执行表达式2;

表达式1为假(0),则执行表达式3;

eg.

int a=2,b=3;a>b?a:b;

行2表达式的值为3

tips:

  1. 条件运算符的优先级高于赋值运算符,低于关系运算符和算术运算符

  2. 条件运算符是唯一的三目运算符


注:if(...)

        else if(...)

        switch(...)   

       这三个之后一般没有分号    ;

        若有“;”    则执行空语句,没有语法错,但也没有意义

下一章节:循环结构(章节:5/9)


p.s. 

        小红书,知乎,CSDN等平台也会上传相应笔记,感谢关注。

        有建议欢迎提出!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值