switch语句和while循环

简介: switch语句和while循环

switch语句

switch 语句是⼀种特殊形式的 if…else 结构,用于判断条件有多个结果的情况。它把多重

的 else if 改成更易用、可读性更好的形式。

我们可以这样理解:if语句适用于判断条件较少的情况,因为if语句如果判断条件情况太多,我们就可能会用到if语句嵌套,或者用的else if太多。

具体的情况大概会这样:

if(条件1)
       if(条件2)
   {
       if(条件3)
   }``
//或者
if(条件1)
  {××××××;}
  else if(条件2)
    {××××××;}
  else if(条件3)
    {××××××;}
  else if(条件4)
    {××××××;}
  ......
else(条件)
  {××××××;}

显然这样就太复杂了,因此为了简便,我们可以用switch语句。

而switch语句的具体用法如下:

switch (表达式) {
case 整形常量: 语句
 case 整形常量: 语句
 default: 语句
}

上面代码中,根据表达式为不同的值,执行相应的 case 分支。如果找不到对应的值,

就执行 default 分支。

特别注意:

switch 后的表达式必须是整型表达式

case 后的值,必须是整形常量表达式

我们举个例子:

输入任意⼀个整数值,计算除3之后的余数

使用switch语句

#include <stdio.h>
int main()
{
  int n = 0;
  scanf("%d", &n);
  switch (n % 3)
  {
  case 0:
    printf("整除,余数为0\n");
    break;
  case 1:
    printf("余数是1\n");
    break;
  case 2:
    printf("余数是2\n");
    break;
  }
  return 0;
}

上述的代码中,我们要注意的点有:

  1. case 和后边的数字之间必须有空格
  2. 每⼀个 case 语句中的代码执行完成后,需要加上 break ,才能跳出这个switch语句。

break的用法

前面的代码中我们应该大致了解到了switch语句的用法,那如果我们去掉case语句中的break,会出现什么情况呢?

#include <stdio.h>
int main()
{
  int n = 0;
  scanf("%d", &n);
  switch (n % 3)
  {
  case 0:
    printf("整除,余数为0\n");
  case 1:
    printf("余数是1\n");
  case 2:
    printf("余数是2\n");
  }
  return 0;
}

当我们输入7时,运行结果如图:

我们发现,7除以3本来余数是1,但是我们发现程序运行的结果多了⼀行“余数是2”的打印。

这是为什么呢?

原因是 switch 语句也是分支效果的,只有在 switch 语句中使用 break 才能在跳出 switch 语

句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续玩下执行,有可能执行其他 case语句中的代码,直到遇到 break 语句或者 switch 语句结束。就比如上面的代码就执行了 case2 中的语句。

所以在 switch 语句中 break 语句是非常重要的,能实现真正的分支效果。

当然, break 也不是每个 case 语句都得有,这就得根据实际情况来看了。

下面有几个例子:

练习:
输⼊⼀个1~7的数字,打印对应的星期⼏
例如:
输⼊:1 输出:星期⼀
输⼊:2 输出:星期⼆
输⼊:3 输出:星期三
输⼊:4 输出:星期四
输⼊:5 输出:星期五
输⼊:6 输出:星期六
输⼊:7 输出:星期天
#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;
}
如果需求发⽣变化,变为:
1. 输⼊1-5,输出的是“⼯作⽇”;
2. 输⼊6-7,输出“休息⽇
#include <stdio.h>
int main()
{
  int day = 0;
  scanf("%d", &day);
  switch (day)
  {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
      printf("⼯作⽇\n");
      break;
    case 6:
    case 7:
      printf("休息⽇\n");
      break;
  }
  return 0;
}

上面的例子中,我们发现应该根据实际的情况,来在代码中觉得是否使用 break ,或者在哪里使用break ,才能正确完成实际的需求。

default的用法

在使用 switch 语句的时候,我们经常可能遇到⼀种情况,比如 switch 后的表达式中的值无法匹配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加入default 子句。

switch (表达式) {
 case 整形常量1: 语句
 case 整形常量2: 语句
 default:语句
}

switch 后边的 表达式 的结果不是整形常量1 ,也不是整形常量2 的时候,就会执行default 语句。

也就是说default语句是处case语句以外的结果

就比如:前面做的打印星期的练习,如果 day 的输入不是1~7的值,如果我们要提示:输入错误,则可以这样完成代码:

#include <stdio.h>
int main()
{
  int day = 0;
  scanf("%d", &day);
  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;
  }
  return 0;
}

switch语句中的case和default的顺序问题

在 switch 语句中 case 子句和 default 子句有要求顺序吗? default 只能放在最后吗?

其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满足实际需求的就可以。不过我们通常是把 default 子句放在最后处理的

我们也可以理解为:switch表达式的结果为5时就是从case 5开始,因此无论我们把case5与其他case语句以及default语句交换顺序时,都是从case5开始。

while语句

C语言提供了3种循环语句, while 就是其中⼀种,接下来就介绍⼀下 while 语句。

while 语句的语法结构和 if 语句非常相似。

我们将if语句以及while语句进行对比:

if(表达式)
 语句;
while(表达式)
 语句;//如果循环体想包含更多的语句,可以加上⼤括号

具体代码如下:

//代码1
#include <stdio.h>
int main()
{
  if (1)
    printf("快关注点赞\n"); //if后边条件满⾜,打印⼀次快关注点赞
  return 0;
}
//代码2
#include <stdio.h>
int main()
{
  while (1)
    printf("快关注点赞\n"); //while后边的条件满⾜,死循环的打印快关注点赞
  return 0;
}

while语句的执行流程

⾸先上来就是执行判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执行循环语

句,语句执行完后再继续判断,是否进行下⼀次判断

while语句的具体例子

//例子1
在屏幕上打印1~10的值
#include <stdio.h>
int main()
{
  int i = 1;
  while (i <= 10)
  {
    printf("%d ", i);
    i = i + 1;
  }
  return 0;
}
//例子2
输⼊⼀个正的整数,逆序打印这个整数的每⼀位
例如:
输⼊:1234,输出:4 3 2 1
输⼊:521,输出:1 2 5
#include <stdio.h>
int main()
{
  int n = 0;
  scanf("%d", &n);
  while (n)
  {
    printf("%d ", n % 10);
    n /= 10;
  }
  return 0;
}
/*
1.要想得到n的最低位,可以使⽤n%10的运算,得到的余数就是最低位,如:1234%10得到4
2. 要想去掉n的最低位,找出倒数第⼆位,则使⽤ n=n/10 操作就可以去掉最低位的,如:
n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第二位3。
3. 循环1和2两个步骤,在n变成0之前,就能到所有的位*/


目录
相关文章
|
1月前
|
C语言
用while语句实现循环
用while语句实现循环
24 1
|
8天前
|
C++
C++一分钟之-循环结构:for与while循环
【6月更文挑战第18天】在C++中,`for`循环适合已知迭代次数,如数组遍历;`while`循环适用于条件驱动的未知次数循环。`for`以其初始化、条件和递增三部分结构简洁处理重复任务,而`while`则在需要先检查条件时更为灵活。常见错误包括无限循环和逻辑错误,解决办法是确保条件更新和正确判断。了解两者应用场景及陷阱,能提升代码效率和可读性。
20 6
|
18小时前
|
机器学习/深度学习
详解分支和循环结构(剖析if语句,switch语句,while循环,for循环,do-while循环)
详解分支和循环结构(剖析if语句,switch语句,while循环,for循环,do-while循环)
14 0
|
1月前
|
C语言
用do…while语句实现循环
用do…while语句实现循环
25 1
|
1月前
|
C语言
用for语句实现循环
用for语句实现循环
22 1
|
26天前
|
程序员 Python
循环控制语句
循环控制语句
|
1月前
|
Python
使用while语句实现循环
在编程中,循环是一种常用的控制结构,它允许代码块重复执行,直到满足某个条件为止。Python中的while语句是实现循环的常用方法之一。下面,我们将详细介绍如何使用while语句来实现循环,并附上示例代码。
23 2
|
1月前
|
存储
用do while语句实现循环
用do while语句实现循环
19 0
|
1月前
|
存储 Python
使用for语句实现循环
在编程中,循环结构是一种非常重要的控制流机制,它允许我们重复执行一段代码,直到满足特定的条件为止。在Python中,for语句是实现循环的一种常用方法。它通常用于遍历序列(如列表、元组、字符串)或迭代器,对序列中的每个元素执行相同的操作。本文将详细介绍如何使用for语句实现循环,并附上示例代码。
20 0
|
1月前
|
C#
C# 循环与条件语句详解
使用 switch 语句选择要执行的多个代码块中的一个。 示例:
52 2