【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

目录
相关文章
|
1月前
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
69 5
|
2月前
|
C语言
C语言判断逻辑的高阶用法
在C语言中,高级的判断逻辑技巧能显著提升代码的可读性、灵活性和效率。本文介绍了六种常见方法:1) 函数指针,如回调机制;2) 逻辑运算符组合,实现复杂条件判断;3) 宏定义简化逻辑;4) 结构体与联合体组织复杂数据;5) 递归与分治法处理树形结构;6) 状态机管理状态转换。通过这些方法,可以更高效地管理和实现复杂的逻辑判断,使代码更加清晰易懂。
229 88
|
30天前
|
C语言
【c语言】分支语句
C语言通过三种基本结构——顺序、选择和循环,构建复杂的程序逻辑。本文主要介绍了C语言的选择结构,即if-else语句及其变体,包括简单的if语句、if-else组合、else if多分支判断、嵌套if以及解决悬空else问题的方法。此外,还详细讲解了逻辑运算符和关系运算符的使用,以及如何利用条件操作符简化逻辑判断。最后,文章对比了if-else与switch语句在实现多分支逻辑时的应用,并解释了switch语句中的break和default关键字的作用。
30 8
|
1月前
|
Serverless C语言
C语言控制语句:分支、循环和转向
C语言控制语句:分支、循环和转向
|
1月前
|
算法 编译器 C语言
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
|
1月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
16 0
|
1月前
|
程序员 C语言
【C语言】分支语句(逻辑运算符与关系运算符)
【C语言】分支语句(逻辑运算符与关系运算符)
|
1月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
34 3
|
IDE 定位技术 开发工具
C语言 第四章 关系、逻辑运算与分支流程控制
一、关系运算 若干表达式用关系运算符连接而成,就构成关系表达式。 关系表达式中,表达式成立,其值为1(真);表达式不成立,其值为0(假)。其他表达式中,其结果如果是非0则为真,结果为0则为假。 关系运算符的优先级低于算术运算符,高于赋值运算符。
1042 0
|
10天前
|
C语言
c语言调用的函数的声明
被调用的函数的声明: 一个函数调用另一个函数需具备的条件: 首先被调用的函数必须是已经存在的函数,即头文件中存在或已经定义过; 如果使用库函数,一般应该在本文件开头用#include命令将调用有关库函数时在所需要用到的信息“包含”到本文件中。.h文件是头文件所用的后缀。 如果使用用户自己定义的函数,而且该函数与使用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数做声明。 如果被调用的函数定义出现在主调函数之前可以不必声明。 如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必多所调用的函数在做声明
27 6