C语言中的分支语句详解

分支语句

分支语句:指的是通过条件判断语句实现多分支的一种语句
分支语句图解

分支语句有哪些:if 语句和 switch 语句

if 语句和 switch语句

if 语句

在所有的 if 分支语句中,如果要在语句体中执行多条语句则要用花括号将整个语句体括起来

if 语句的语法格式

if 语句的语法格式:

if (表达式)
{
  语句体;
}

if 语句的执行情况

if 语句是如何执行的:if 语句里的表达式如果为 true 的话,就会执行 if 语句中的语句体,如果为 false 的话,就不会执行if语句中的语句体。

表达式是 true 还是 false 可以根据这个来判断:在C语言中,0表示假,非0表示真。

if语句的代码示例:
//输入 a 和 b 的值,判断 a 是否大于 b 。
#include <stdio.h>

int main()
{
	int a = 0;
	int b = 0;
	printf("a = ");
	scanf("%d", &a);
	printf("b = ");
	scanf("%d", &b);
	if(a > b)
	{
		printf("a > b\n");
	}
	return 0;
}

这个例子中,if 语句的表达式是 a > b。
当 a > b 时,if 语句中的表达式就会为 true,然后执行 if 语句中的语句体。
在这里插入图片描述
当 a < b 时,if 语句中的表达式就会为 false,就不会执行 if 语句中的语句体。
在这里插入图片描述

2. if - else语句

else 是和 if 语句搭配起来使用的。

if - else 语句的语法格式

else 的使用方法如下:

if(表达式)
{
  语句体1;
}
else
{
  语句体2;
}

if - else 语句的执行情况

else语句的执行情况:if 语句里的表达式如果为 true 的话,就会执行if 语句中的语句体,如果为 false的话,就会执行 else 语句中的语句体

if - else 语句的代码示例:

让我们来完善一下我们刚刚的代码示例。

//输入 a 和 b 的值,判断 a 是否大于 b,如果a > b,则输出a > b。如果a < b 则输出 a < b。
#include <stdio.h>

int main()
{
	int a = 0;
	int b = 0;
	printf("a = ");
	scanf("%d", &a);
	printf("b = ");
	scanf("%d", &b);
	if(a > b)
	{
		printf("a > b\n");
	}
	else
	{
		printf("a < b\n");
	}
	return 0;
}

这个例子中,if 语句的表达式是 a > b。
当 a > b 时,if 语句中的表达式就会为 true,然后执行 if 语句中的语句体。
在这里插入图片描述
当 a < b 时,if 语句中的表达式就会为 false,然后执行 else 语句中的语句体。
在这里插入图片描述

3. if 的嵌套

if - else 语句是一个多分支语句它的语法格式如下:

if 的嵌套语句的语法格式

if(表达式1)
{
  语句体1;
}
else if(表达式2)
{
  语句体2;
}
else if(表达式3)
{
  语句体3;
}
···
else
{
  语句体n;
}

if 的嵌套语句的执行情况

else - if 语句的执行情况:当if 语句里的表达式为 true 时,就会执行 if 语句中的语句体,当 if 语句里的表达式为 false 时,就会判断每一个 else if 语句中的表达式是否为 true。若为 true 则执行该else if 分支,若为 false执行 else 分支

if的嵌套语句的代码示例:
//根据输入的年龄输出年龄段
#include <stdio.h>

int main()
{
	int age = 0;
	printf("age = ");
	scanf("%d", &age);
	if(age <= 8)
	{
		printf("幼年");
	}
	else if(age > 8 && age <= 12)
	{
		printf("少年");
	}
	else if(age > 12 && age <= 18)
	{
		printf("青少年");
	}
	else
	{
		printf("成年");
	}
	return 0;
}

这个例子中:if 语句中的表达式是 age <= 8 。
当 age <= 8 时,if 语句中的表达式就会为 true。
然后执行 if 语句中的语句体,而不执行 else if 和 else 语句中的语句体。
在这里插入图片描述

当 age > 8 时,if 语句中的表达式就会为 false。
然后向下执行直到找到 else if 语句中表达式中为 true 的语句并执行其语句体。
在这里插入图片描述
在这里插入图片描述

如果 else if 语句中的表达式都为 false 那就会执行 else 语句中的语句体。
在这里插入图片描述

5.switch 语句

switch - case 语句的语法格式

switch(表达式)
{
case 0:
  语句体1;
  break;
case 1:
  语句体2;
  break;
case 2:
  语句体3;
  break;
···
case n:
  语句体n;
  break;
default:
  语句体3;
  break;
}

在switch - case 语句中 switch 语句和 case 语句的表达式只能为整型常量表达式,不能为浮点型变量表达式

switch - case 语句的执行情况

1.先执行switch语句的表达式
2.然后在case语句中寻找符合 switch 语句表达式的那个case语句的表达式
3.以此为入口进入switch - case 分支语句并执行case语句中的语句体
4.在执行完了case语句中的语句体后,如果case语句的语句体后有break就会直接退出switch - case分支语句不执行下面的case语句和default语句
5.如果case语句的语句体后没有break就会一直向下执行case语句和default语句直到退出switch - case分支语句

switch - case语句代码示例:
//根据输入的成绩返回S、A、B、C、D、E四个等级
#include <stdio.h>

int main()
{
	int grade = 0;
	printf("grade = ");
	scanf("%d", &grade);
	switch(grade / 10)
	{
	case 0:
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("E");
		break;
	case 6:
		printf("D");
		break;
	case 7:
		printf("C");
		break;
	case 8:
		printf("B");
		break;
	case 9:
		printf("A");
		break;
	case 10:
		printf("S");
		break;
	default:
		printf("输入错误,请重新输入");
		break;
	}
	return 0;
}

在这个例子中,switch的表达式是grade / 10,由于switch语句中只能存放整形常量表达式,这就会导致grade / 10 最后的结果会是一个整数。
grade / 10 得出的结果是(0 <= grade < 6)时,就会从 case 0: 到 case 5: 中寻找入口进入switch语句,然后一直向下执行直到找到break退出switch语句或者一直执行完switch语句
当grade < 10时
当10 <= grade < 20
当20 <= grade < 30 时
当30 <= grade < 40时
当40 <= grade < 50时
当50 <= grade < 60时
grade / 10 得出的结果是(60 <= grade < 70)时,就会从case 6:这个入口进入switch语句,然后通过break语句跳出switch - case分支语句
当60 <= grade < 70时
grade / 10 得出的结果是(70 <= grade < 80)时,就会从case 7:这个入口进入switch语句,然后通过break语句跳出switch - case分支语句
当70 <= grade < 80时
grade / 10 得出的结果是(80 <= grade < 90)时,就会从case 8:这个入口进入switch语句,然后通过break语句跳出switch - case分支语句
当80 <= grade < 90时
grade / 10 得出的结果是(90 <= grade < 100)时,就会从case 9:这个入口进入switch语句,然后通过break语句跳出switch - case分支语句
当90 <= grade < 100时
grade / 10 得出的结果是100时,就会从case 10:这个入口进入switch语句,然后通过break语句跳出switch - case分支语句
当grade == 100时
当输入的值都不符合case语句中的表达式时就会走default语句
在这里插入图片描述

switch语句中的default

switch语句中的default可以放在switch语句中的任意位置,并不是只能放在case语句的后面或switch语句的末尾

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值