【C语言初阶】分支语句If与switch的具体用法,有这篇博客就够了

简介: 【C语言初阶】分支语句If与switch的具体用法,有这篇博客就够了

一.什么是语句?

就像英语有语法语句一样,C语言也同样有语法语句


C语句可分为五类:

42d018de75454a3b964d2b64b9d45316.png

咱们今天要讲的就是这五种语句中的控制语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。

可分成以下三类:

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

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

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

二.分支语句(选择结构)

人生中有有各种各样的选择,每个选择都会走向不同的道路,但是一旦选择了,就没有回头路可走了,我希望在看这篇博客的你,能够慎重的进行人生中的每一个选


不扯远了,画个图让大家理解一下选择语句:

d54ae3f0c0bb45d2ad1c7c038cde5039.png


这就是选择!!!

免责声明:博主不是尬黑原神,博主自己就是开服60级老履刑者

78fd8a7147e941e7a55f971fd0e9a85b.png

1.If语句

if语句最最基础的选择语句

下面是具体的语法结构

if(表达式)


语句;


if(表达式)

语句1;

else

语句2;


多分支

if(表达式1)

语句1;

else if(表达式2)

语句2;

else

语句3;


代码演示

//代码1
int main()
{
  int age = 0;
  scanf("%d", &age);
  if (age < 18)
  {
    printf("未成年\n");
  }
}
//代码2
int main()
{
  int age = 0;
  scanf("%d", &age);
  if (age < 18)
  {
    printf("未成年\n");
  }
  else
  {
    printf("成年\n");
  }
}
//代码3
int main()
{
  int age = 0;
  scanf("%d", &age);
  if (age < 18)
  {
    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
  {
    printf("老寿星\n");
  }
}

C语言规定:

在C语言中,0为假,非0为真


if后的括号中是判断是否进入if的条件。如果判断表达式中的结果为真,就执行语句中的内容。

其中,当if中的条件不满足时,当有else if就会进入else if进行第二次判断,如果else if的条件也不满足,才会进入最终的else中。

If语句的嵌套使用

其实没什么难以理解的,就是在if语句中再套一层或者几层if语句实现我们更加精准的选择

int main()
{
  int m = 1;
  int n = 2;
  if (m == 1)
  {
    if (n == 2)
    {
      printf("Hello\n");
    }
    else
    {
      printf("你好\n");
    }
  }
  return 0;
}

If语句中一些需要注意的小细节

1.上面代码中的else都是与最近的if匹配的,可不要在嵌套if中搞错了else匹配的对象。

2.注意哦,在if语句中,后面的“{}”是可以省略的,就像这样:

int main()
{
  int a = 0;
  int b = 2;
  if (a == 1)
  {
    if (b == 2)
      printf("hehe\n");
    else
      printf("haha\n");
  }
  return 0;
}

但是这里博主墙裂不推荐这么写哦,这里指出是防止以后你看到某些代码中没加"{}"以为它是一个错误


不推荐原因:


1)注意这里的if语句只能控制下一行代码的执行,如果你错误的输入了几行代码,就会像这样

1cfae4e5a25046e2bfb7ff4e63323a74.png

看到了嘛,我们的b明明不等于2还是打印了gg,当我们的代码一多起来,就很容易因为不注意这里未加“{}”而写出bug


2)作为一名合格的程序猿,好的代码风格是非常重要的,咱们的代码不仅要让自己看懂,还得让别人看懂。当你写出1)中的代码时,其实就不算一个非常好的代码风格,同时也十分容易出bug。


3.一些好的代码风格分享

比如以下代码就有非常好的代码风格:


int num = 1;
if(5 == num)
{
  printf("hehe\n");

4

我相信你也出现过这种错误,明明判断某个变量是否等于某个值,但是一不小心少写了一个“=”,变成了把某个值直接赋给了某个变量

以上代码出现这种情况时就会直接报错提醒你哦

43509e92c6f541c89381a09829044f9a.png

这种即能让我们看懂又能帮助我们找bug的代码风格就是非常好的代码风格!!!

2.switch语句

switch语句也是一种分支语句。

常常用于多分支的情况


比如:

输入1,输出星期一

输入2,输出星期二

输入3,输出星期三

输入4,输出星期四

输入5,输出星期五

输入6,输出星期六

输入7,输出星期日

如果此时咱们还是写成if else的语句形式当然也可以实现,但是由于咱们的选择分支过多使用if语句是不是有点太复杂了?这时候switch就闪亮登场啦!!!

switch语句的基本语法结构

switch(整型表达式)

{

语句项;

}


什么是语句项呢?

是一些case语句

如下格式:

case 整形常量表达式:

语句;


在switch语句中的 break

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

示例代码如下:

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

有时候我们的需求变了:

1. 输入1-5,输出的是“weekday”;

2. 输入6-7,输出“weekend”


代码如下:

int main()
{
  int day = 0;
  scanf("%d", &day);
  switch (day)
  {
  case 1:
  case 2:
  case 3:
  case 4:
  case 5:
    printf("weekday\n");
    break;
  case 6:
  case 7:
    printf("weekend\n");
    break;
  }
  return 0;
}

a96959b6add14481b61cfdb4820d8129.png


也就是说在switch-break语句中,不碰到break是不会停下的,我们可以通过以上这种用法来实现几个分支结果的合并。

编程好习惯:

在最后一个 case 语句的后面加上一条 break语句。

(之所以这么写是可以避免出现在以前的case 语句后面忘了添加 break语句最终导致switch语句停不下来的情况)


Switch语句中的default

如果表达值与所有的case标签的值都不匹配怎么办?

其实也没什么,结果就是所有的语句都被跳过而已。

程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。

但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?


你可以在语句列表中增加一条default子句,把下面的标签

"default:"写在任何一个 case 标签可以出现的位置。

当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。

因此,每个switch语句中只能出现一条default子句。

但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句

编程好习惯

在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break 。


上面的讲解可能有点抽象,我们还是看代码来理解一下吧

int main()
{
  int day = 0;
  scanf("%d", &day);
  switch (day)
  {
  case 1:
  case 2:
  case 3:
  case 4:
  case 5:
    printf("weekday\n");
    break;
  case 6:
  case 7:
    printf("weekend\n");
    break;
  default:
      printf("选择错误,请重新输入");
      break;
  }
  return 0;
}

注意到以上两个代码的不同了吗?由于一个星期只有7天,当我们在最后加上default后,输入不满足1~7的数就会报错,这就是default的作用。

81650212e6354d5fa80b2e45ba48a863.png

switch的嵌套使用

与If语句一样,switch语句也能嵌套使用达到多分支精准选择的作用

话不多说,用代码解释

int main()
{
  int n = 1;
  int m = 2;
  switch (n)
  {
  case 1:
    m++;
  case 2:
    n++;
  case 3:
    switch (n)//switch嵌套使用
    {
    case 1:
      n++;
      break;//注意,switch嵌套中的break只会跳出一层switch
    case 2:
      m++;
      n++;
      break;
    }
  case 4:
    m++;
    break;
  default:
    break;
  }
  printf("m = %d, n = %d\n", m, n);
  return 0;
}

12b954de480a4b73a8ce05061372e8ff.png


这里输出结果对于很多人来说都很容易理解就不多解释了。如果你没看懂,一步步结合我上面讲解的知识再试着看看,还是看不懂可以在评论区提出你的疑问或者私信我哦,对于初学者刚开始实在理解不了没啥好丢人的,毕竟博主最开始看的时候也没看懂。。。


总结

以上就是今天要讲的所有内容了,这么听下来是不是感觉分支选择语句也没啥难的?

其实在实际应用中只要你注意到我上文提到的那些小细节以及养成好的编程风格,那么分支语句这部分就难不倒你

最后,如果你对文章的内容有任何疑问欢迎在评论区提出或者私信我哦

创作不易,如果感觉文章内容对你有帮助的话,不妨点个三连再走呗。

你们的支持就是我创作的动力,再次感谢大家的支持,下次再见啦!



(可莉请求你们三连支持一下博主!!!点击下方评论点赞收藏帮帮可莉吧!)

20fa3306e76244de9879742c165c792a.gif

目录
相关文章
|
2月前
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
78 5
|
20天前
|
IDE 编译器 开发工具
【C语言】全面系统讲解 `#pragma` 指令:从基本用法到高级应用
在本文中,我们系统地讲解了常见的 `#pragma` 指令,包括其基本用法、编译器支持情况、示例代码以及与传统方法的对比。`#pragma` 指令是一个强大的工具,可以帮助开发者精细控制编译器的行为,优化代码性能,避免错误,并确保跨平台兼容性。然而,使用这些指令时需要特别注意编译器的支持情况,因为并非所有的 `#pragma` 指令都能在所有编译器中得到支持。
93 41
【C语言】全面系统讲解 `#pragma` 指令:从基本用法到高级应用
|
2月前
|
C语言
【c语言】分支语句
C语言通过三种基本结构——顺序、选择和循环,构建复杂的程序逻辑。本文主要介绍了C语言的选择结构,即if-else语句及其变体,包括简单的if语句、if-else组合、else if多分支判断、嵌套if以及解决悬空else问题的方法。此外,还详细讲解了逻辑运算符和关系运算符的使用,以及如何利用条件操作符简化逻辑判断。最后,文章对比了if-else与switch语句在实现多分支逻辑时的应用,并解释了switch语句中的break和default关键字的作用。
40 8
|
2月前
|
Serverless C语言
C语言控制语句:分支、循环和转向
C语言控制语句:分支、循环和转向
|
2月前
|
算法 编译器 C语言
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
|
2月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
20 0
|
2月前
|
程序员 C语言
【C语言】分支语句(逻辑运算符与关系运算符)
【C语言】分支语句(逻辑运算符与关系运算符)
|
24天前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
49 10
|
24天前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
43 9
|
24天前
|
存储 Unix Serverless
【C语言】常用函数汇总表
本文总结了C语言中常用的函数,涵盖输入/输出、字符串操作、内存管理、数学运算、时间处理、文件操作及布尔类型等多个方面。每类函数均以表格形式列出其功能和使用示例,便于快速查阅和学习。通过综合示例代码,展示了这些函数的实际应用,帮助读者更好地理解和掌握C语言的基本功能和标准库函数的使用方法。感谢阅读,希望对你有所帮助!
33 8