这章直接直观列举常用选择语句,可归类为单分支、双分支、多分支。
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:
-
default 与其语句组n+1 和if-else结构中的else 与其语句组一样,可省略。
-
表达式为字符型或整型!
-
若为以上形式,表达式等于常量2时,执行语句如下:
语句组2➡️语句组3➡️...➡️语句组n+1➡️语句n+2
即找到匹配项后接下来的语句会统统执行(常考点),这就违背了多选一,就此,我们引入一个一个新东西,叫“break”
-
实现真正的多选一的形式
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:
-
条件运算符的优先级高于赋值运算符,低于关系运算符和算术运算符
-
条件运算符是唯一的三目运算符
注:if(...)
else if(...)
switch(...)
这三个之后一般没有分号 ;
若有“;” 则执行空语句,没有语法错,但也没有意义
下一章节:循环结构(章节:5/9)
p.s.
小红书,知乎,CSDN等平台也会上传相应笔记,感谢关注。
有建议欢迎提出!