目录
首先分支语句有两种
- if语句
- switch语句
if语句)
语法结构有单分支和多分支
单分支:
if (表达式)
语句1 ;
else
语句2 ;
多分支 :
if(表达式1)
语句1:
else if(表达式2)
语句2:
else if(表达式3)
语句3:
...
else
语句n:
举一个例子:
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
{
printf("青少年\n");
printf("好好学习\n");
}
else if (age >= 18 && age < 30)
{
printf("青年\n");
}
else if (age >= 30 && age < 50)
{
printf("中年\n");
}
else if (age >= 50 && age < 80)
{
printf("中老年\n");
}
else if (age >= 80 && age < 100)
{
printf("老年\n");
}
else
{
printf("老寿星\n");
}
return 0;
}
由此可见:if语句后面 可以跟多条语句
注意 1: else与最近的if匹配(悬空else)
注意2:内部if语句执行的前提是外部if语句的条件满足(即首先要进入外部if语句)
注意3: 代码风格问题很重要,应该每一个if、else、else if后面都要跟一个{}代码块 提高代码的可读性
注意4:case与Switch()里面也可以是 1+0/ 5+8 等表达式
例子:
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
}
return 0;
}
:实际上 else是与内部的if进行匹配的
而且外部if条件不满足 根本就不会进入内部if语句 最终什么也不会输出
switch语句
switch(整型表达式):
{
语句项 ://包括case、default
}
注意1: case 后面为整型常量表达式
可以是:
int ( 0 1 2 ....)
long
short
char 类型(字符)//因为数字也是字符
不可以是float、double类型
注意2:case不一定要按顺序 从Switch所读取的那个数开始
注意3:case会从Switch所接受到的那个数字对应的case开始向下执行(逐语句向下执行)
注意3:如果多个case对应一个情况 可以这样实现:
#include<stdio.h>
int main()
{
int input = 0;
scanf("%d", &input);
switch (input)
{
case 2:printf("傻子");//input==2的时候 从case2进入
case 4://case4 case5 case1 都对应"pig"
case 5:
case 1:printf("pig");
case 3:printf("你好");
}
return 0;
}
break
break的作用:直接跳出Switch语句
可以避免继续执行下面的case
int main()
{
int day = 0;
scanf("%d", &day);//3
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
}
return 0;
}
default子句
如果所有的case与Switch语句所读取的表达式的值都不匹配
那么加一个default 不匹配则会进入default子句
int main()
{
int day = 0;
scanf("%d", &day);//3
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default:
printf("输入错误\n");//这里加了个default 防止输入1~7以外的数字
break;
}
return 0;
}
注意:default如果放在最后可以不加break;
default可以放在所有case的最前面 但此时必须加break;否则default子句执行之后
还会继续执行后面的case语句直到遇见break
Switch语句的嵌套
Switch语句允许嵌套,嵌套时也遵循从上到下依次执行语句
#include <stdio.h>
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1:
m++;
case 2:
n++;
case 3: //从case1执行到case3 进入内部Switch语句
switch (n) //此时n=2 m=3进入内部的case2
{//switch允许嵌套使用
case 1:
n++;
case 2:
m++; n++; //m变为4 n变为3
break;
}
case 4: //继续执行外部的case4
m++; //n保持3不变 m变为5
break; //跳出语句 不再执行
default:
break;
}
printf("m = %d, n = %d\n", m, n);
return 0;
}