分支语句的作用:
分支语句也叫选择语句,生活中我们总会遇到许多的选择,有许多岔路口,你会怎么选择?在C语言中也会有同样的问题,我们可能面临不同的情况需要做出不同的判断,那么就需要学习一下C语言中的分支语句了。分支语句可以给我们更多的选择来选取合适的路径以解决问题,增加程序的灵活性,适应性。
分支语句的实现:
1.if else语句
if语句是C语言中出场率极高的语句,他的语法如下
a.单一if的语句:
#include <stdio.h>
int main()
{
if (判断条件)
{
条件成立时执行的语句;
}
// {}可以不写,不写只会执行if后边第一条语句,如果执行一条以上则需用{ };
//实际举例如下
int girlfriend;//女朋友数量
scanf("%d", &girlfriend); //输入女朋友的数量
if (girlfriend > 10)//判断,如果大于10个,算你厉害
{
printf("算你厉害");
}
return 0;
}
if后()内为判断条件,其表达式结果为0则为假,不执行if后{ }内的语句或者第一条语句(只有一条语句没带{ }时),表达式的值为1,则为真,执行后边语句。
b.if else语句:
int main()
{
// if (判断条件)
// {
// 条件成立时执行的语句;
// }
// {}可以不写,不写只会执行if后边第一条语句,如果执行一条以上则需用{ };
int girlfriend;//女朋友数量
scanf("%d", &girlfriend); //输入女朋友的数量
if (girlfriend > 10)//判断,如果大于10个,算你厉害
{
printf("算你厉害");
}
else //如果没有大于10个,即if不成立,则执行else,即我不觉得你很厉害
{
printf("我不觉得你很厉害");
}
return 0;
}
与单一的if语句不同的时,if else语句if的判=判断条件不成立时,会执行else后边的语句。
如下例子,菱形框内为判断条件,成立则买牛肉面,不成立则执行else饿肚子
#include <stdio.h>
int main()
{
int money;
scanf("%d", &money); //兜里余额
if (money> 10) //兜里钱大于10块,视为有钱,牛肉面10块一碗
{
printf("吃饱啦"); //兜里有钱,买牛肉面
}
else //若兜里的钱少于10块执行else
{
printf("饿死了"); //没钱饿肚子
}
return 0;
}
if else可以嵌套使用,但是一般为了简洁,会更简练的写成如下方式
从if开始,先判断if后边的表达式,若为真,则执行,后边的else if 和 else不在执行,若不满足,则从上往下判断,遇到成立的判断条件,则会执行其后边的语句,else前边所有判断的条件都不满足时会执行else
#include <stdio.h>
int main()
{
int month;
scanf("%d", &month); //输入月份,范围为1-12
if (month >= 1 && month <= 3) //1月到三月为春季
{
printf("春季");
}
else if(month >3 && month <= 6) //3月到6月为夏季
{
printf("夏季");
}
else if (month > 6 && month <= 9) //6月到9月为秋季
{
printf("秋季");
}
else //上边都不成立则为冬季
{
printf("冬季");
}
return 0;
}
2.switch语句
若变量x与某一条case后的常量相等,则执行其对应的语句,执行后若无跳出语句break,会按照顺序往下执行,知道最后一条case执行结束,结束switch语句即变量x与常量相等的地方为语句执行的入口。
switch (变量x)
{
case 常量1:
语句1;
//每条语句后可加break,起到终止switch语句的作用
case 常量2:
语句2;
case 常量3:
语句3;
......
case 常量n:
语句n;
}
若加上转向语句break,则执行完一条语句后会结束switch,这条语句后的case语句将不再执行,达到对号入座的效果,加不加break取决于解决什么问题,请看如下例子
#include <stdio.h>
int main()
{
int age;//输入年龄
scanf("%d", &age);
switch (age)//属于的年龄与case后边的进行比较
{
case 16:
printf("属猪");
break;
case 17:
printf("属狗");
break;
case 18:
printf("属鸡"); //若输入age为18,则会执行本条语句
break; // 执行完后执行break,跳出switch,
case 19:
printf("属猴");
break;
case 20:
printf("属羊");
break;
case 21:
printf("属马");
break;
default: //若输入的年龄不在16-21,即与上边都不相等,那就执行default
printf("我不知道");
break;
}
return 0;
}
其中default的作用与if语句中的最后一条else类似。
大家可以自行研究一下不加break的效果,思考一下可以解决那些问题。