选择语句与循环语句(二)

当我们需要通过单一的表达式,将程序分成多个分支的时候,可以使用 switch 语句,这样可以使程序的可读性更高。

 switch语句

我们可以看这样一段代码

#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	if (1 == n)
	{
		printf("星期一\n");
	}
	else if (2 == n)
	{
		printf("星期二\n");
	}
	else if (3 == n)
	{
		printf("星期三\n");
	}
	else if (4 == n)
	{
		printf("星期四\n");
	}
	else if (5 == n)
	{
		printf("星期五\n");
	}
	else if (6 == n)
	{
		printf("星期六\n");
	}
	else if (7 == n)
	{
		printf("星期日\n");
	}
	else
	{
		printf("输入错误!\n");
	}
	return 0;
}

当我们用if....else if ... else 的形式来判断输入输出时,就显得多余复杂了,那如果使用switch语句来实现会简洁许多。

switch语句的结构

switch(整型表达式) {

    case 整形常量表达式:
    语句;

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

像"case 1 :" 这样用来表示程序跳转的标识称为标签。

注意:

1和 : 之间有没有空格都可以,但是case 和 1 之间必须有空格。

标签的值必须为常量,不可以为变量。

不允许多个标签同为一个值。

在switch语句中的break

在上述代码中,我们第一次接触到break 语句, 在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。

break 有“打破”“脱离”的意思,在执行完break语句后,程序就会跳出将它围起来的switch语句

如果我们没有加上break,会出现什么情况呢?

 可以看到,当我们输入1的时候,程序打印完“星期一”后,并没有停下来,而是继续向下执行,直到程序结束。

default语句

如果表达式的值和所有的case标签的值都不匹配怎么办呢?

程序并不会终止,也不会报错,只是跳过了所有语句。

拿上面的代码举例:

 程序跑起来后,输入8,没有标签可以和8匹配,但是程序仍然正常运行。

如果加上default语句呢?

 

可以看到程序执行后,发现前面的标签和8都不匹配,程序就自动跳到default语句并执行了。

所以在每个switch语句中加入一条default语句是个好习惯,甚至可以在后边再加一个break语句。

if语句 switch语句 ,都是用来实现程序流程选择性分支的,因此统称为选择语句

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值