C语言--分支语句

目录

 if语句)

 switch语句

break 

default子句 

Switch语句的嵌套      


首先分支语句有两种

  • 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(整型表达式):

{

        语句项 ://包括casedefault

注意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;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2021狮子歌歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值