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,关注后即可获取最新文章推送

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

C 语言中的 switch 语句和 while 循环详解的更多相关文章

  1. C 语言中的 switch 语句 case 后面是否需要加大括号

    事件原由为编辑器的自动缩进,当 case 换行后不自动缩进. 于是在在想可以可否在 case 后面再大括号,让其自动缩进. 查了资料,发现 case 是可以加大括号的,相当于代码块. 而且还有另外一个 ...

  2. C语言中嵌入式SQL语句

    原文:[转载]C语言中嵌入式SQL语句 http://blog.csdn.net/cnlht/archive/2007/12/12/1930960.aspx原文地址 实验内容: 掌握SQL Serve ...

  3. Java中的switch语句后面的控制表达式的数据类型

    Java中的switch语句后面的控制表达式的数据类型 1.byte 2.char 3.short 4.int 5.枚举类型 6.Java 7允许java.lang.String类型

  4. 退出循环break,在while、for、do...while、循环中使用break语句退出当前循环,直接执行后面的代码。

    在while.for.do...while循环中使用break语句退出当前循环,直接执行后面的代码. 格式如下: for(初始条件;判断条件;循环后条件值更新) { if(特殊情况) {break;} ...

  5. JS流程控制语句 退出循环break 在while、for、do...while、while循环中使用break语句退出当前循环,直接执行后面的代码。

    退出循环break 在while.for.do...while.while循环中使用break语句退出当前循环,直接执行后面的代码. 格式如下: for(初始条件;判断条件;循环后条件值更新) { i ...

  6. 常用经典SQL语句大全完整版--详解+实例 (存)

    常用经典SQL语句大全完整版--详解+实例 转 傻豆儿的博客 http://blog.sina.com.cn/shadou2012  http://blog.sina.com.cn/s/blog_84 ...

  7. 常用经典SQL语句大全完整版--详解+实例 《来自网络,很全没整理,寄存与此》

    常用经典SQL语句大全完整版--详解+实例 下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML ...

  8. Day09:switch——case结构的使用详解

    switch--case结构的使用详解 什么是switch--case结构 他也是一种多选择结构 switch--case结构是类于if--else的语法,通过比较而输出对应的内容: 通俗的讲,好比我 ...

  9. CSS中伪类及伪元素用法详解

    CSS中伪类及伪元素用法详解   伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的 ...

  10. mysqldump的常用语句及各参数详解

    mysqldump的常用语句及各参数详解 分类: MySQL 2011-01-11 17:55 1368人阅读 评论(0) 收藏 举报 数据库mysql服务器tableinsertdatabase m ...

随机推荐

  1. linux基本知识汇总2(系统编程) 60000字汇总

    /////////////进程/任务 -- task任何启动并运行程序的行为,都是由操作系统帮助我们将程序转换成进程 -- 进程:完成特定的任务 进程控制块:PCB(win) / task_struc ...

  2. 探索Terraform实践:优化基础设施管理

    Terraform 是管理基础设施及代码(IaC)最常用的工具之一,它能使我们安全且可预测地对基础设施应用更改. Terraform作为一个强大的基础设施即代码工具,为开发人员和运维团队提供了一种简单 ...

  3. 什么是Redis持久化?

    Redis持久化指的是将内存中的数据同步到硬盘文件,并在redis重新启动的时候将数据备份到硬盘上,从而保证数据的安全性.通过持久化, Redis可以在系统关闭时将数据保存到硬盘上,避免了数据丢失的风 ...

  4. Java //遍历100以内的偶数,获取所有偶数的和,输出偶数的个数

    1 //遍历100以内的偶数,获取所有偶数的和,输出偶数的个数 2 3 int i =1; 4 int sum = 0; 5 int count = 0; 6 for(i = 1;i<=100; ...

  5. sqlmap 绕过WAF

    1.基本的语法 sqlmap 更新  sqlmap -update 具体的使用方法: sqlmap -u url --current-user sqlmap -u url --current-db s ...

  6. C++左值右值完美转发转移

    左值(Lvalue)与右值(Rvalue) 英文含义: 左值(Lvalue):Locator value,意味着它指向一个具体的内存位置. 右值(Rvalue):Read value,指的是可以读取的 ...

  7. Java面向对象(中)--super/多态/向下转型/equals/toString/包装类/单元测试工具

    java对象 方法重写 子类继承父类以后,可以对父类同名同参数的方法,进行覆盖操作 重写后,当创建子类对象以后,通过子类对象调用子父类中同名同参数的方法时,执行的是子类重写父类的方法. 如何区分方法重 ...

  8. [.Net]使用Soa库+Abp搭建微服务项目框架(五):服务发现和健康监测

    ​上篇文章说过,服务发现和健康监测是面向服务体系架构重要的模块,Soa库可以配置使用Consul作为服务发现服务,或者轮询已配置的服务列表作为本机服务发现. 将用Hangfire来作为服务发现与健康监 ...

  9. python3 Crypto模块实例解析

    一 模块简介 1.简介 python的Crypto模块是安全hash函数(例如SHA256 和RIPEMD160)以及各种主流的加解密算法的((AES, DES, RSA, ElGamal等)的集合. ...

  10. ETL工具-KETTLE教程 实例实战4----转换(值映射、列转行,增加常量、增加序列等)

    附:Kettle实战视频教程,需要的朋友可以看看学习下哈~~ kettle实战第一讲-文件和数据库表的互相转换处理_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili kettle实战第二讲-数据库单 ...