【C语言步行梯】分支语句if...else、switch详谈

🎯每日努力一点点,技术进步看得见

🏠专栏介绍:【C语言步行梯】专栏用于介绍C语言相关内容,每篇文章将通过图片+代码片段+网络相关题目的方式编写,欢迎订阅~~

文章目录


什么是语句?

C语言由;(分号)隔开的就是一条语句,举个例子↓↓↓

c 复制代码
printf("这是一行语句");
int a = 10;//这也是一个语句
;//虽然只有一个分号,但这也是语句,这种语句称为空语句

引入分支语句(选择结构)

生活中,我们有很多需要选择的情况。例如:你想喝品牌的可乐?百事还是可口可乐?为了满足选择需求,C语言就有了分支(选择)结构。

if语句

在我们坐公交车的时候,如果我们刷的是学生卡,此时卡机就会叫一声"学生卡~"。C语言该怎么实现这样的情景呢?

那我们就得先来认识一下单分支语句了,它的结构是这样的↓↓↓

c 复制代码
if()//括号内填判断条件
{
	//执行语句
}

以上面学生卡的例子来说,如果是学生卡则在频幕上打印"学生卡",代码实现如下

cpp 复制代码
if(isStudentCard)
{
	printf("学生卡~");
}

除了这种分支(选择)的场景,还有这么个场景:我去银行取钱,我的余额是100块,如果我取100,则会取钱成功;如果我取10000,则会取钱失败。

于是我们就有了双分支语句结构↓↓↓

c 复制代码
if()//括号内填写判断条件
{
	//满足条件则执行这里
}
else
{
	//不满足条件则执行这里
}

上面的取钱场景可以转化为下面这个代码↓↓↓

c 复制代码
//rest表示余额
//money表示要取的钱
if(money <= rest)
{
	//ATM吐钱
}
else
{
	//显示余额不足
}

关于if语句,还有最后这一种场景:我们考试的时候100-90分是优秀,89-70分是良好,69-60分是及格,小于60分是不及格。此时需要更多的分支,C语言就引入了多分支语句。它的格式如下↓↓↓

c 复制代码
if()//这里填写条件1
{
	//满足条件1执行这里
}
else if()//这里填写条件2
{
	//满足条件2执行这里
}
else if()//这里填写条件3
{
	//满足条件3执行这里
}
else
{
	//上述条件都不满足,执行这里
}

对于上面按分数划分等级的场景,我们可以写出如下代码↓↓↓

c 复制代码
if(score >= 90 && score <= 100)
{
	printf("优秀\n");
}
else if(score >= 70 && score < 90)
{
	printf("良好\n");
}
else if(score >= 60 && score < 70)
{
	printf("及格\n");
}
else
{
	printf("不及格\n");
}

下面给出一些小tips:

★ps:if...else if...else多分支语句中,可以有多个else if。

★ps:在填写括号中的条件表达式时,如果表达式的值非0,则表示真;如果表达式的值为0,则表示假。

★ps:if、else if、else的后面最多只能接1条语句,如果要接多条语句,需要使用大括号{}将所有语句括起来。

★ps:if...else...的匹配满足就近原则。例如下方代码,else与离它最近的if语句匹配,即与age>=60所在的if语句匹配,形成分支结构。

c 复制代码
if(age >= 18)
	if( age >= 60)
		printf("长者")
else
	printf("我和age>=60的if语句匹配");

经过上面的学习,我们拿几道题来练练手,Let's Go!【读者先自己写写,我们再一起对照对照】

练习1:编写程序判断一个数是否为奇数

c 复制代码
#include <stdio.h>

int main()
{
	int num = 0;
	scanf("%d", &num);
	if(num % 2 == 1)
	{
		printf("是奇数\n");
	}
	else
	{
		printf("不是奇数\n");
	}
	return 0;
}

练习2:Jammingpro想喝蜜雪冰城,Jammingpro输入他带的钱的数量,你帮他判断一下他能不能买得起5块钱的柠檬水

c 复制代码
#include <stdio.h>

int main()
{
	int money = 0;
	scanf("%d", &money);
	if(money >= 5)
	{
		printf("能买得起\n");
	}
	else
	{
		printf("买不起\n");
	}
	return 0;
}

switch语句

如果我们输入1表示星期一,输入2表示星期二,以此类推。如果使用if...else if...else的语句结构一定能够实现,但实现代码实在是太繁杂了。C语言中的switch语句就派上用场了,我们来看看它怎么判断星期↓↓↓

c 复制代码
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;
}

其中switch后面的括号中可以填表达式,它将会和case子句后的整型、常量或者表达式进行匹配,如果匹配成功,则会执行对应case子句后面的代码;如果都无法匹配,则会执行default子句后面的代码。

★ps:上面case语句后面的break不可以省略。以day=6为例,它将和case 6相匹配,并打印"星期六",在遇到break语句时,将跳出整个switch语句。假如case 6子句下面没有break,则在打印完"星期六"之后,将会向后继续执行打印"星期日"的操作,直到遇到下一个break语句。

借助switch语句中,如果没有遇到break就会继续向后执行的特点,我们可以实现如下代码。这个代码中,day的数值表示星期,当输入1到5时,则会打印"工作日";输入6到7,则会打印"休息日";输入其他内容,则会打印"输入有误"。

c 复制代码
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");
		break;
}

★ps:default子句可以放在整个switch语句中的任意位置,不一定要放在最后面。

学完switch语句,那就我们来看一段代码,看看它的执行结果应该是什么【读者先想出结果,再一起对照一下】

c 复制代码
int main()
{
	int n = 1;
	int m = 2;
	switch(n)
	{
		case 1:
			printf("Jammingpro ");
		case 2:
			switch(m)
			{
				case 1:
					printf("ccc ");
				case 2:
					printf("is ");
					break;
				case 3:
					printf("strong!\n");
					break;
				default:
					printf("nice\n");
					break;
			}
		default:
			printf("handsome!\n");
			break;
	}
	return 0;
}

揭晓答案的时刻:"Jammingpro is handsome"。

解析:外层的switch语句中,n和case 1自己相匹配,打印完"Jammingpro "后,由于其后面没有break语句,将继续执行case 2中的内容。case 2中嵌套了switch语句,m和case 2自己想匹配,于是打印了"is ",因为内层case 2子句后面有break语句,将会跳出内层switch语句。外层switch的case 2后面没有break语句,它将继续执行default子句中的内容,打印出"handsome\n"。

🚩这篇文章结束了~~

如果文章中出现了错误,欢迎私信或留言。(๑•̀ㅂ•́)و✧

有任何疑问请评论或私信哦~~o( ̄▽ ̄)ブ

相关推荐
ServBay18 小时前
垃圾堆里编码?真的不要怪 PHP 不行
后端·php
用户9623779544820 小时前
CTF 伪协议
php
RuoZoe2 天前
重塑WPF辉煌?基于DirectX 12的现代.NET UI框架Jalium
c语言
BingoGo3 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack3 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo4 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack4 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
祈安_5 天前
C语言内存函数
c语言·后端
JaguarJack5 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo5 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php