C语言基础:分支语句超详图解(if、switch语句)

本文详细介绍了C语言中的条件判断语句(分支语句,如if和switch),包括它们的语法、嵌套使用以及switch语句中的break和default子句。通过实例展示了如何运用这些语句控制程序流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        今天向大家介绍一下分支语句与循环语句,这篇文章将带你详细了解各分支语句与循环语句的使用方法,希望能对你有帮助~


目录

1、控制语句

2、条件判断语句(分支语句)

1、if语句

2、switch语句

· switch语句中的break        

· default子句


1、控制语句

        控制语句是C语言的五类语句之一,用于控制程序的执行流程,以实现程序的各种结构方式,他们由特定的语句定义符组成,C语言有九种控制语句,可分为以下三类:

1、条件判断语句 也叫分支语句:if语句、switch语句;

2、循环执行语句:do while语句、while语句、for语句;

3、转向语句:break语句、goto语句、continue语句、return语句

今天我们先学习条件判断语句。


2、条件判断语句(分支语句)

        分支语句实际上是选择结构,我们根据判断条件,来选择分支方向,执行相应内容。

1、if语句

if语句的语法结构:

                    if(表达式)

                            语句;

如果表达式为真,则执行语句;如果表达式为假,则不执行语句。

#include<stdio.h>
int main()
{
    int age=0;
    scanf("%d",&age);
    if(age>=18)
        printf("成年了\n");
    else
        printf("未成年\n");
}

        如以上代码所示,当括号中判断条件为真时,我们执行if语句内容,当判断为假时,不执行语句内容,执行else语句。

              

同时,if语句也可以嵌套使用:

#include<stdio.h>
int main()
{
    int age = 0;
    scanf("%d", &age);
    if (age >= 18)
    {
        if (age < 45)
            printf("青年人\n");
        else if (age >= 45 && age < 60)
            printf("老年\n");
        else if (age >= 60 && age < 75)
            printf("年轻老年人\n");
        else if (age >= 75 && age < 90)
            printf("老年人\n");
        else
            printf("长寿老人\n");
    }
    else
        printf("未成年\n");
	return 0;
}

      由这一串代码我们看出,在if语句里还可以嵌套if语句,它的使用可以是多分支的。

且在if语句中,else是与他最近的一个if匹配的:

接下来我们尝试使用if语句来执行实例的结构:

#include<stdio.h>
int  main()
{
	//超级饿 —— 1
	//有点饿 —— 2
	//很饱不饿 —— 3
	printf("你有多饿呢:");
	int x = 0;
	scanf("%d", &x);  //选择饿的程度
	if (x == 1)
	{
		//如果选择1 证明我们想吃一份烤冷面
		//如果我们想加香菜输入1 不想输入0
		int y = 0;
		printf("你想加香菜吗:");
		scanf("%d", &y);
		if (y)
		{
			printf("你得到了一份加香菜的烤冷面\n");
		}
		else
		{
			printf("你得到了一份不加香菜的烤冷面\n");
		}
	}
	else if (x == 2)
	{
		printf("你得到了一个煎饼\n");
	}
	else //这边表示除了1 2的其他状态,也可以使用else if(x == 3)
	{
		printf("啥也不吃,回去睡觉\n");
	}
	return 0;
}

2、switch语句

        switch语句也是一种分支语句,常常用于多分支的情况。

例如:

输入1,输出星期一

输入2,输出星期二

输入3,输出星期三

输入4,输出星期四

输入5,输出星期五

输入6,输出星期六

输入7,输出星期日

        如果用if语句来表达,写成if……else if…else if… 的形式太过复杂,我们可以尝试用switch语句更加简洁明了的表示。

switch语句的语法结构:

switch(整型表达式)

{

        case 整型常量表达式;

                语句;

}

那我们事例就可以用代码写为:

#include<stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
		printf("今天星期一\n");
	case 2:
		printf("今天星期二\n");
	case 3:
		printf("今天星期三\n");
	case 4:
		printf("今天星期四\n");
	case 5:
		printf("今天星期五\n");
	case 6:
		printf("今天星期六\n");
	case 7:
		printf("今天星期日\n");
	}

	return 0;
}

但当我们编译起来会发现,并不能很好的输出我们想要的内容。

          

· switch语句中的break        

        我们想要的是输入几就打印星期几,但我们发现,打印完后程序并没有就此停下来,而是会继续往下运行,直至执行完所以case 语句。

        因为在switch语句中,我们没办法直接实现分支,搭配break一起使用才能实现真正的分支。

break语句的实际作用是把语句划分为不同的分支部分。

更改后: 

#include<stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
		printf("今天星期一\n");
		break;
	case 2:
		printf("今天星期二\n");
		break;
	case 3:
		printf("今天星期三\n");
		break;
	case 4:
		printf("今天星期四\n");
		break;
	case 5:
		printf("今天星期五\n");
		break;
	case 6:
		printf("今天星期六\n");
		break;
	case 7:
		printf("今天星期日\n");
		break;
	}

	return 0;
}

                

 由此我们成功实现了我们的需求。

· default子句

但还有一个问题,如果我们输入了8 或是输入了其他与case标签的值都不匹配的数,会怎么样呢?

        其实也不会怎么样,就是结构中所有的语句都会被跳过。程序也不会被终止,也不会报错,因为这种情况在c语言中并不认为是个错误。但是如果我们并不想忽略这个值时,我们可以增加一个default子句。

        当switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会被执行。所以,每个switch语句中只能出现一条default子句。它可以出现在语句列表的任何位置,并且语句流会像执行一个case标签一样执行default子句。

#include<stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
		printf("今天星期一\n");
		break;
	case 2:
		printf("今天星期二\n");
		break;
	case 3:
		printf("今天星期三\n");
		break;
	case 4:
		printf("今天星期四\n");
		break;
	case 5:
		printf("今天星期五\n");
		break;
	case 6:
		printf("今天星期六\n");
		break;
	case 7:
		printf("今天星期日\n");
		break;
	default:
		printf("输入错误,请重新输入\n");
        break;
	}


以上就是 C语言基础:分支语句超详图解(if、switch语句) 的全部内容,希望对你有帮助!请多多支持吧~

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值