Switch语句的应用

Switch语句的应用与练习

witch语句也是一种分支语句,常常用于多分支的情况。

在我们要输出一个数显示星期几的时候:

    输入1,输出星期一
    输入2,输出星期二
    输入3,输出星期三
    输入4,输出星期四
    输入5,输出星期五
    输入6,输出星期六
    输入7,输出星期日

那我们会觉得一直 if…else if …else if 实在是太复杂了,那这个时候我们就得有不一样的语法形式,于是我们便用到了switch 语句。

那么Switch语句的语法是怎么样的呢?
switch(整型表达式)
{
语句项;
}
而语句项又是什么呢?
是一些case语句:
具体如下所示:
case 整形常量表达式:
语句;

那么如果要实现输出几就显示星期几则要如下图代码所示:

在这里插入图片描述
这时有人就会发出疑问了,这个int day = 0;我们能不能把 int 改成float或者其他的呢?
答案是不行!因为case语句必须使用整形常量,是不可以用小数或者字母的。

当我们的需求有所变化:

  1. 输入1-5,输出的是“weekday”;
  2. 输入6-7,输出“weekend
    在这种要求的情况下我们就可以如下所示去输入代码
    在这里插入图片描述
    这一段代码有三个重点:
    1.case1到5和case6到7是没有printf(“weekeday\n”)和printf(“weekend\n”)
    的(因为case在没有任何输入的情况下会自动跳过进行下一个case语句的运算)
    2.用default来解决输入了1~7以外的数字的输出方案
    3.在最后一个 case 语句的后面加上一条 break语句(之所以这么写是可以避免出现在以前的最后一个 case 语句后面忘了添加 break语句)

这里我们要插入一个叫做default子句的概念
如果表达的值与所有的case标签的值都不匹配,正常来讲也就是所有的语句都被跳过而已程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?
你可以在语句列表中增加一条default子句,把下面的标签
default
写在任何一个 case 标签可以出现的位置。
因为当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。所以,每个switch语句中只能出现一条default子句。
但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。

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

那么在我们了解了Switch语句的用法后我们来尝试一下Switch语句的运用:

我们首先看一下图一:在这里插入图片描述
我们先来自己计算一下n和m的的结果是多少?
(不要先看下图结果!!!) 在这里插入图片描述
我们可以看见n = 5,m = 3;
这个时候肯定有人说了:n不是应该等于4吗?
这个时候就证明你对于这个Switch语句还不够了解了!

这一段代码我来给你们一步一步的分析运行逻辑:
首先是int n = 1和int m = 2.
这是说明n和m的初始值是1和2
然后是把n =1 和m=2代入到Switch(n)语句中进行运算
首先在n = 1的情况下会代入到第一个语句内
case 1:n++;使 n + 1 = 2
case 2:m++; n++;使 m + 1 = 2 同时使 n + 1 = 3(此时n在经过case 1后已经是 n = 2 了)
然后break退出这个循环进入到下一步
而此时因为 n = 3 ,则case 4的语句由于 n ≠ 1 所以跳过运算case 4 内的 m++
然后再用break跳转到下一步default
而default没有任何运算则直接跳过
最后由break跳到printf输出 n = 5 m = 3
这就是这段代码的所有运行逻辑了。

感谢各位读者花费时间阅读本文章,希望你们能从中学到新的知识。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值