某科学的分支语句 --- switch

格式

说起来switch就想起某游戏机。。。
switch语句也是分支语句的一种,同
if……else if……else……
类似,他的格式如下

switch (整形表达式)
{
	语句项;
}

语句项的格式为

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

在这里插入图片描述

要按照输入的星期数来输出对应的星期数。
emmmmmmmm,好像有点拗口的亚子,假如输入1,那就输出“星期一”这三个字,输入2,就输出“星期二”这三个字……输入5,就给你蹦个野人粗来(无端联想)
在这里插入图片描述
听起来仿佛很简单的亚子(实事也确实很简单)
第一种方式:
if……else if……else……
在这里插入图片描述
没错就是他,无敌重复大法

#include <stdio.h>

int main()
{
	int weekday;
	scanf("%d",&weekday);
	if (weekday == 1)
	printf("星期一\n")else if (weekday == 2)
	printf("星期二\n")else if (weekday == 3)
	printf("星期三\n")else if (weekday == 4)
	printf("星期四\n")else if (weekday == 5)
	printf("星期五\n")else if (weekday == 6)
	printf("星期六\n")else if (weekday == 7)
	printf("星期日\n")//有一说一差点打成了星期七
	else 
	printf("这个不可以有\n")return 0;
}

感觉这个似乎有点复杂,重复的复,打杂的杂,看起来就不怎么高端的亚子,那就换种法子吧
方法二:
switch

#include <stdio.h>

int main()
{
	int weekday;
	scanf("%d",&weekday);//看起来是不是很熟悉,
						 //没错我复制粘贴的
	switch(weekday)
	{
	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;
	default:
	printf("没这号日子\n")
	}
	return 0; //有一说一完全没看出来高端到哪去
}

那么问题来了,我现在不想输出星期了,我想输出周内还是周末,那咋整咧?
在这里插入图片描述
其实也差不多,look

#include <stdio.h>

int main()
{
	int weekday;
	scanf("%d",&weekday);
	switch(weekday)
	{
	case 1:	//哎嘿,我后边可以不跟东西,想不到吧
	case 2:
	case 3:
	case 4:
	case 5:
	printf("周内\n");
	break;
	case 6:
	case 7:
	printf("周末\n");
	break;
	default:
	printf("没这号日子\n")
	}
	return 0;
}

当然,这个用if语句也是可以的,switch语句的所有代码都能用if实现
在这里插入图片描述
但是 switch 和 if……else if……else…… 还是有区别的
switch是匹配跳转,在case后边的哪个值符合就跳转到相应的case;
而 if 则是判断,即 0 为假,非 0 为真,再进入到对应的 else 中

又有一个问题
在这里插入图片描述

int main()
{
	int n = 1;
	int m = 2;
	switch (n)
	{
	case 1:
		m++;
	case 2:
		n++;
	case 3:	//这个是可以嵌套的哟
		switch (n)
		{
		case 1:
			n++;
		case 2:
			n++;
			m++;
			break;
		}
	case 4:
		m++;
		break;
	default:
		break;
	}
	printf("m = %d , n = %d\n", m, n);
	return 0;
}

那么这个程序的结果是什么呢?
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值