文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C语言示例讲解switch分支语句的用法

2024-04-02 19:55

关注

1、了解switch分支语句

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

比如:

输入1,就会输出星期一

输入2,就会输出星期二

输入7,就会输出星期七

对于这样的代码需求,如果用if 、else if、else的形式就会显得太复杂。如何用switch语句实现该功能呢?switch语句的结构又是怎样的呢?

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

其中,整型表达式必须为整型,且为常量(字符也可以,因为字符也属于是整型的一种,因为字符存储的时候用的是字符的ASCII码值);语句项是一些case语句。

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

代码实现:

int main()
{
	int day = 0;
	scanf("%d",&day);
	switch (day)
	{
	case 1:
		printf("星期一\n");
	case 2:
		printf("星期二\n");
	case 3:
		printf("星期三\n");
	case 4:
		printf("星期四\n");
	case 5:
		printf("星期五\n");
	case 6:
		printf("星期六\n");
	case 7:
		printf("星期日\n");
	}
	return 0;
}

运行该代码,发现运行之后得到的结果如下:

1
星期一
星期二
星期三
星期四
星期五
星期六
星期日

显然,这样的结果是不对的。因为执行完case 1 之后,没有东西阻止它,它就会一直case 2、case 3…地执行下去。若在程序运行的时候,输入的是6,就会输出 星期六星期日。switch后面的表达式(day)是几,它就会从case 几进去,决定入口的是表达式day的值以及case后面的值。

修改程序:在每个case后面加上break,以此来跳出case。

case决定的是入口,而break决定的是出口,这才实现了真正的分支。

2、示例

输入1-5就输出工作日,输入6-7就输出休息日。

int main()
{
	int day = 0;
	scanf("%d",&day);
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日\n");
		break;
	case 6:
	case 7:
		printf("休息日\n");
		break;
	}
	return 0;
}

测试运行结果如下:

5
工作日

break语句的实际效果是把语句列表划分为不同的部分。

有一个编程好习惯:在最后一个case语句的后面也加上一条break语句。万一之后要在原先程序的基础上再加上一些其它case语句,不至于出现上面的输入1,一下子星期一到星期天全部打印出来的情况。

3、default子句

如果表达的值与所有的case标签的值都不匹配怎么办?其实也没什么,结果就是所有的语句都被跳过而已,程序并不会终止,也不会报错。因为这种情况在C语言中并不认为是错误,但是,如果并不想忽略不匹配所有标签的表达式怎么办?这时候就可以在语句列表中增加一句default子句,将其写在任何一个case标签可以出现的位置。

当switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会执行。注意:每个switch语句中只能出现一条default子句。

int main()
{
	int day = 0;
	scanf("%d",&day);
	switch (day)
	{
	default:
		printf("输入错误\n");
		break;
	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;
}

测试结果:

9
输入错误

4、练习

看程序运行的结果是多少?

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

主要就是考察switch里面的break的作用。

最终的运行结果如下:

m=5,n=3

到此这篇关于C语言示例讲解switch分支语句的用法的文章就介绍到这了,更多相关C语言switch分支内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯