在C语言中主要采用两种语句实现分支结构,分别为if语句和switch语句
if语句
基本形式
if语句的基本形式如下
if (表达式)
语句;
表达式执行结果为真(非0),则执行语句,表达式结果为假(0)则不执行语句
if else 语句
在实际运用中常用的形式如下
if(表达式)
{
语句一;
语句二;
}
else
{
语句三;
语句四;
}
表达式为真执行语句一二,表达式为假则执行语句三四
注意,如果需要执行多条语句就需要加上大括号代表一个代码块,只执行一条语句时则可以不加
if的嵌套
在 if else 语句中,else 可以与另外一个 if 连用来构成多重判断,形式如下
if (表达式一)
语句一;
else if (表达式二)
语句二;
else
语句三;
其中,表达式一为真则执行语句一,表达式一为假表达式二为真则执行语句二,而表达式一与表达式二都为假时则执行语句三
注意,不论几重嵌套,if else 语句都只执行其中的一条分支语句
switch语句
基本形式
switch 语句其实是一种特殊的 if else 语句,用来处理有多个结果的情况,其基本形式如下
switch(表达式)
{
case value1:
语句一;
break;
case value2:
语句二;
break;
default:
语句三;
break;
}
对于如上代码,表达式的值是什么就执行相应的 case 分支语句,而如果没有相匹配的值就执行 default 分支语句
注意
1.switch 后面的表达式必须是整型表达式
2.case 后面的值必须是整型常量表达式
3.单个字符也可看做是一个整型,如:
char a = 0;
scanf("%c", &a);
switch (a)
{
case 'b':
printf("haha\n");
break;
case 'c':
printf("hehe\n");
break;
default:
printf("输入有误!\n");
break;
执行结果:
switch语句中的case和default的顺序问题
在switch语句中,各个case与default其实是没有顺序要求的,只要顺序满足实际需求就可以,不过我们习惯将default 放在最后处理
switch中的break
对于一个switch语句,我们还需要注意:
1.case和后边的数字之间必须有空格
2.每⼀个 case语句中的代码执⾏完成后,需要加上 break,才能跳出这个switch语句
那么,如果不加break会发生什么呢?例:
char a = 0;
scanf("%c", &a);
switch (a)
{
case 'b':
printf("haha\n");
case 'c':
printf("hehe\n");
default:
printf("输入有误!\n");
break;
同样的代码,我们将前两个break去掉,观察结果如下:
发现,我们只输入了一个 ‘b’ ,但是将所有结果都打印了出来
其实,break 的作用就是跳出 switch 语句,在实际中我们如果仅需要’一一匹配’的情况下,那么就必须加上break以跳出语句
当然,可根据实际问题情况具体分析是否加break,有些问题场景可不加break,这里举一个例子:
//对于一个switch语句,要求输入 1-5 时表示工作日,6-7 时表示休息日
#include<stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);//输入一个日期进行判断
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");
}
return 0;
}
部分结果如下:
以上即为C语言中分支相关内容知识