选择分支语句详解--(if与witch的使用)


✨✨✨每个人都有着自己的旅程,慢慢走着自己的路,你总会有所发现.

编程真是一件很奇妙的东西。你只是浅尝辄止,那么只会觉得枯燥乏味,像对待任务似的应付它。但你如果深入探索,就会发现其中的奇妙,了解许多所不知道的原理。知识的力量让你沉醉,甘愿深陷其中并发现宝藏。


前言

  • 本篇文章为读友总结了关于if语句,switch语句和break语句在switch中的使用,希望自己所总结的内容能帮到,正在困惑的你,如有错误希望在评论区指正,让我们一起交流进步!


本文开始

文章重点

  • 了解什么是语句
  • if的使用
  • switch的使用

C语言被称为是结构化的程序设计语言,它的分支都来源于生活,比如一条路我们一直顺利的走下去这属于 顺序结构;在走的过程中有了岔路我们可能会选择走那条路这就是 选择结构;如果迷路了一直绕圈走,这就是 循环结构
为了解决生活中的问题, C语言就有了对应的顺序、选择、循环结构的实现,接下来让我们了解一下吧!

1.什么是语句?

  • 表达式语句
    函数调用语句
    控制语句
    复合语句
    空语句

为了更好的表达,我将以代码形式向大家讲解语句的书写.

#include<stdio.h>
int main()
{
	//表达式语句,就是写一个表达式即可
	2 + 3;//记住每个语句后面必须要有;冒号才算完整语句

	//函数调用语句,一般在函数调用时会用到
	add(2, 3);

	//空语句:一个冒号即可不需要带内容
	;
	return 0;
}

[说明]:本篇主要介绍控制语句
控制语句:用于控制程序的执行流程,以实现程序的各种结构方式.
c语言有9种控制语句分为三类:

  • 分支语句(条件判断语句):if语句、switch语句
  • 循环语句:do while语句、while语句、for语句;
  • 转向语句:break语句、goto语句、continue语句、return语句;

循环会在下篇详细讲解,请大家不要担心.

2.选择语句

选择好比学习,我们要好好学习,校招拿到好的offer,如果躺平不努力学习,毕业可能失业,回家卖红薯.
这就是生活中的选择!

在这里插入图片描述

  • 面对生活中的岔口,你也该选择你的道路了!决定权在你的手中.

2.1 if语句

if语句的语法结构

使用 if 需要判断表达式是否为真
非0为真,0为假
为真选择语句执行,否者不执行该语句

  • if(表达式)
       语句;
  • if(表达式)
       语句1;
    else
       语句2;
  • 多分支if语句
    if(表达式1)
      语句2;
    else if(表达式2)
      语句2;
    else
      语句3;

代码演示if语句的使用 :

#include<stdio.h>
int main()
{
	//根据判断年龄判断是否成年
	/*int age = 16;
	if (age < 18)
	{
		printf("未成年\n");
	}
	else
	{
		printf("成年\n");
	}
	*/
	
	//多分支
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("少年\n");
	}
	else if(age>=18&&age<=30)
	{
		printf("青年");
	}
	else if (age >= 31 && age <= 55)
	{
		printf("壮年");
	}
	else if (age >= 56 && age <= 90)
	{
		printf("老年");
	}
	else
	{
		printf("老寿星");
	}
	return 0;
}

if 语句大括号使用规则
只有一条语句时,使用if语句可以不带 { };
语句大于等于两条时必须使用 { }不然if与默认只读取一条语句
这里的 { }又叫代码块,可以存放多条语句

2.1.1悬空else

  • 何为悬空呢?是不是有很大疑问?让我看一段代码来思考一下吧!
#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 相匹配,这里的else与if(b=2)相匹配,不能以为else与那个if对齐就跟谁匹配,这是错误的思想.

这里我们就可以意识到 好的代码风格 有多重要,正确的代码风格能使你的代码逻辑更清晰.让我们看一段改进过的代码,来体验一下!

#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;
}
  • 是不是有很明显的区别,自己的思路是不是更清晰了呢?所以从现在做起保持自己的代码风格,让自己有一手优秀的代码风格!!!

2.1.2if书写形式的对比

代码风格能影响人观看的舒适度,我们来通过一段代码看看,他们会有多大区别!

 //代码示范1
	if (condition) {
		return x;
	}
	return y;

	//代码示范2
	if (condition)
	{
		return x;
	}
	else
	{
		return y;
	}

	//代码示范3
	int num = 1;
	if (num == 5)
	{
		printf("hehe\n");
	}
	//当变量与常量相等时,我们建议这样放置
	//代码4
	int num = 1;
	if (5 == num)
	{
		printf("hehe\n");
	}
   //代码5(错误示范)
if (condition)
{
return x;
}
else
{
return y;
}

通过观察,显然代码2,代码4更清晰表达自己的逻辑,让人能够更快的阅读,还能避免一些问题BUG等等.如果写出代码5的样子,与前几个代码相比,好代码更加重要,所以小伙伴们更加要注重自己的代码风格.

2.switch语句

switch语句是一种分支语句,常用于多分.
比如:

输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期日

  • 实现多分支也可以用if…else if … else形式,但是形式很复杂,我们怎么能够更简洁的表示,这里就要用到switch语句.让我们来看看吧!!!

语句结构

switch(整型表达式)
{
 case 整型常量表达式:
     语句;
}

2.1break在switch中的应用

  • 在switch语句中,我们没办法直接实现分支语句, 搭配break才能真正的实现分支.
  • break:在switch语句中遇见break时,会直接跳出switch语句

例如:

#include<stdio.h>
int main()
{
	int day = 0;
	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;
}

进入 switch语句根据()中的表达式判断,表达式有特殊要求必须是 常量表达式或者枚举类型 ,从表达式进入那个语句项(如:表达式是6,就会进入case 6语句项),而 case 后面必须是 整型常量表达式 ,才可以使用.

有时候我们的需求会改变:

  • 要求输入1-5,输出是工作日
  • 输入6-7,输出休息日

我们可以在每个case 后面都重复一遍工作日,然后再跳出,但是这样我们会重复大量的工作,怎样才能更简洁一些呢?

//示范1:
#include<stdio.h>
int main()
{
	int day = 0;
	switch (day)
	{
	case 1:
		printf("工作日\n");
		break;
	case 2:
		printf("#include<stdio.h>
int main()
{
	int day = 0;
	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;\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;

我们该怎么做呢,让我们来操作一下!

//示范2:
#include<stdio.h>
int main()
{
	int day = 0;
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日\n");
		break;
	case 6:
	case 7:
		printf("休息日\n");
		break;
	}
    default :
       printf("输入错误,请重新输入");
       break;
	return 0;
}

由示范2我们可以轻易对比出,break在switch语句中的重要作用,输入1-5如果没有break跳出,将会继续执行下面的语句,直到遇见break才会跳出

2.2default子语句

表达式中的值没有与case匹配的标签,会产生什么效果呢?

其实会跳过全部语句,程序也不会停止报错,这只是情况想的不全面所造成的,我们该怎么解决这个问题呢?

  • default:是通过判断常量表达式,发现没有匹配的case标签,会通过default标签,执行它后面的语句,但是需要注意,每个switch语句中只能有一个default子句,它可以出现在语句列表的任何位置,可以在case语句上面,也可以在case语句下面.

这里也有一个编程好习惯对于default子句来说,它可以不加break,但是加上一个break可能会更好.

说了怎么多让我通过下面代码练习一下吧!

#include<stdio.h>
int main()
{
	int n = 1;
	int m = 2;
	switch (n)
	{
	case 1:
		m++;
	case 2:
		n++;
	case 3:
		switch (n)
		{
		case 1:
			n++;
		case 2:
			m++;
			n++;
			break;
		}
	case 4:
		m++;
		break;
	default :
		break;
	}
	printf("m=%d n=%d\n", m, n);
	return 0;
}
  • 这里switch语句式支持嵌套使用的,练习上述代码,思考一下,switch语句的用法,你的答案是否正确来对照一下吧!

在这里插入图片描述


总结

✨✨✨各位读友,本篇分享到内容是否更好的让你理解了选择与分支,如果对你有一点帮助给个👍赞鼓励一下吧!!
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值