C 语言中的 switch 语句和 while 循环详解

小万哥
• 阅读 304

C 语言中的 switch 语句

替代多重 if..else 语句,可以使用 switch 语句。switch 语句用于选择多个代码块中的一个来执行

switch(表达式) {
  case x:
    // 代码块
    break;
  case y:
    // 代码块
    break;
  default:
    // 代码块

工作原理

  • switch 表达式只会被计算一次
  • 表达式的值与每个 case 的值进行比较
  • 如果找到匹配,则执行相应的代码块
  • break 语句用于跳出 switch 块并停止执行
  • default 语句是可选的,如果找不到匹配的 case,则执行它指定的代码

下面的示例使用星期几的数字来计算星期几的名称:

int day = 4;

switch (day) {
  case 1:
    printf("星期一");
    break;
  case 2:
    printf("星期二");
    break;
  case 3:
    printf("星期三");
    break;
  case 4:
    printf("星期四");
    break;
  case 5:
    printf("星期五");
    break;
  case 6:
    printf("星期六");
    break;
  case 7:
    printf("星期日");
    break;
}

// 输出 "星期四" (星期 4)

break 关键字:

  • 当 C 遇到 break 关键字时,它会跳出 switch 块。
  • 这将停止执行更多代码和块内部的 case 测试。
  • 当找到匹配项并完成任务时,就该休息了。没有必要进行更多测试。
  • break 可以节省大量的执行时间,因为它“忽略”了 switch 块中所有其他代码的执行。

default 关键字:

  • default 关键字用于指定在找不到 case 匹配时要运行的代码:
int day = 4;

switch (day) {
  case 6:
   printf("今天是星期六");
    break;
  case 7:
   printf("今天是星期日");
    break;
  default:
   printf("期待周末");
}

// 输出 "期待周末"

C 语言中的 while 循环

循环

循环可以执行一段代码,只要满足指定的条件。循环非常方便,因为它们可以节省时间、减少错误并使代码更易于阅读。

while 循环

只要指定的条件为真,while 循环就会一直循环执行一段代码块:

语法:

while (条件) {
  // 要执行的代码块
}

在下面的示例中,只要一个变量 (i) 小于 5,循环中的代码就会一遍又一遍地运行:

示例

int i = 0;

while (i < 5) {
  printf("%d\n", i);
  i++;
}

注意: 不要忘记增加用于条件的变量 (i++),否则循环将永远不会结束!

do/while 循环

do/while 循环是 while 循环的一个变体。这个循环会在检查条件是否为真之前先执行一次代码块,然后只要条件为真,就会重复该循环。

语法:

do {
  // 要执行的代码块
}
while (条件);

下面的示例使用了一个 do/while 循环。即使条件为假,循环也至少会执行一次,因为代码块是在测试条件之前执行的:

示例

int i = 0;

do {
  printf("%d\n", i);
  i++;
}
while (i < 5);

不要忘记增加用于条件的变量,否则循环将永远不会结束!

现实生活中的例子

为了展示 while 循环的实际例子,我们可以创建一个简单的“倒计时”程序:

示例

int countdown = 3;

while (countdown > 0) {
  printf("%d\n", countdown);
  countdown--;
}

printf("新年快乐!\n");

为了展示 while 循环结合 if else 语句的实际例子,假设我们玩一个 Yahtzee 游戏!

示例

如果骰子数字为 6,则打印“Yahtzee!”:

int dice = 1;

while (dice <= 6) {
  if (dice < 6) {
    printf("没有 Yahtzee\n");
  } else {
    printf("Yahtzee!\n");
  }
  dice = dice + 1;
}

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

点赞
收藏
评论区
推荐文章
Karen110 Karen110
3年前
一篇文章带你了解JavaScript switch
Switch是与if...else...相同的条件语句,不同之处在于switch语句允许根据值列表测试变量是否相等。switch语句用于根据不同的条件执行不同的操作。一、Switch语句使用switch语句选择要执行的多个代码块中的一个。1\.语法switch(expression)casen:codeblock
Karen110 Karen110
3年前
一篇文章带你了解JavaScript While 循环
循环可以执行一个代码块,只要指定条件为真,循环就可以执行代码块。一、While循环while只要指定条件的值为真,循环就会执行指定语句。while循环的语法while(condition)statement//只要条件为真,就执行代码例:项目JavaScriptwhile语句只要n小于5,就遍历一段代码:varn0;while(n<
Easter79 Easter79
3年前
swift中更强大的switch和眼花缭乱的for in
从日记中整理出switch和forin。swift的switch比起oc真的是厉害坏了而且forin中的功能也比oc的更加灵活。小作笔记1.1swift中swich语句会将一个值与多个可能的模式匹配。然后基于第一个成功匹配的模式来执行合适的代码块,如果想要oc中匹配到case后依旧贯穿接下来的case则要增加fallthough。switch语句一
Wesley13 Wesley13
3年前
C语言二次系统学习3(分支循环、函数)
本次学习,主要针对语句和函数两部分进行学习。分支语句(if,switch)与循环语句(while,for,dowhile)switch语句中,在每个选择之后如果不进行break跳出,会执行下一个case,而且应注意default语句的使用,一般会放在{}代码块的后方dowhile语句中,会首先执行一次循环,再进行判定,所以使用相对较少。whi
小万哥 小万哥
9个月前
Java break、continue 详解与数组深入解析:单维数组和多维数组详细教程
JavaBreak和ContinueJavaBreak:break语句用于跳出循环或switch语句。在循环中使用break语句可以立即终止循环,并继续执行循环后面的代码。在switch语句中使用break语句可以跳出当前case,并继续执行下一个case
小万哥 小万哥
7个月前
C++ While 和 For 循环:流程控制全解析
CSwitch语句使用switch语句选择要执行的多个代码块之一。语法cppswitch(expression)casex://代码块break;casey://代码块break;default://代码块它的工作原理如下:switch表达式被评估一次
小万哥 小万哥
3个月前
Kotlin 控制流和数组操作详解
Kotlin的when表达式提供了一种比if..else更清晰的方式来选择执行多个代码块之一,类似于Java的switch语句但更为强大和灵活。while循环允许在条件为真时重复执行代码块,而do..while循环则保证至少执行一次。break和continue可用于控制循环流程:前者终止循环,后者跳过当前迭代。数组则用于存储多个值,可以创建、访问、修改数组元素及遍历整个数组。这些构造使得编写简洁且高效的代码成为可能。
小万哥 小万哥
11个月前
深入解析 C 语言中的 for 循环、break 和 continue
C语言中的for循环当您确切地知道要循环执行代码块的次数时,可以使用for循环而不是while循环cfor(语句1;语句2;语句3)//要执行的代码块语句1在执行代码块之前执行(一次)。语句2定义执行代码块的条件。语句3在执行代码块后执行(每次)。下面的示
小万哥 小万哥
10个月前
C# 循环与条件语句详解
CSwitch语句使用switch语句选择要执行的多个代码块中的一个。示例:csharpswitch(expression)casex://代码块break;casey://代码块break;default://代码块break;它的工作方式如下:1.评估
小万哥 小万哥
10个月前
C# Break 和 Continue 语句以及数组详解
CBreak它被用于“跳出”switch语句。break语句也可用于跳出循环。以下示例在i等于4时跳出循环:示例:csharpfor(inti0;i<10;i)if(i4)break;Console.WriteLine(i);CContinuecont