C语言之初识 switch 多分支结构

目录

1.switch 多分支结构的定义
2.switch 结构的定义格式
3.switch 遵循的规则
4.程序示例
5.总结

1. switch 多分支结构的定义

1.1 分支结构的定义:

     分支结构的定义请见 《C语言之初识 if_else 分支结构》 此篇博文,此处不在描述。点击此处可直接阅读…

1.2 switch 结构:

     ①. switch 是另外一种选择结构的语句,用来替代简单的、拥有多分支的 if_else 语句。

     ②. switch 大多数情况下是进行判断选择的。以C语言来说,switch(开关语句)常和 case break default 一起使用。

2. switch 结构的定义格式

switch (整型变量表达式)				// switch 语句,即 “ 切换 ” 语句;case 即 “ 情况 ”
{

case 常量1: 语句块1; break;		    // break 是 C 语言中的一个关键字,专门用于跳出 switch 语句块1;break;
case 常量2: 语句块2; break;
case 常量3: 语句块3; break;
case 常量4: 语句块4; break;
...
case 常量n: 语句块n; break;

default: 语句;
	break;	
}

3. switch 遵循的规则

3.1 执行次序:

     当变量表达式所表达的值与其中一个 case 语句中的常量值相符时,就执行此 case 语句后面的程序,并依次去执行后面所有 case 语句中的程序,除非遇到 break 语句跳出 switch 为止;也就是说,整个 switch 执行结束了,接着会执行整个 switch 后面的代码。如果常变量表达式的量都不相符,就执行 default 语句中的程序。

3.2 所写的任何 switch 语句都必须遵循以下规则:

     ①. 只能针对基本数据类型中的整型类型使用 switch,这些类型包括 int、char 等。对于其他类型,则必须使用 if 语句。

     ②. switch() 的参数类型不能为浮点数,字符串。(必须是整型类型)

     ③. case 标签必须是常量表达式 ( constantExpression ),如 42 或者 ‘4’ + 20。

     ④. case 标签必须是唯一常量;也就是说,不允许两个 case 具有相同的常量值

4. 程序示例

4.1 示例一:输入成绩等级,输出相应的分数区间

#include<stdio.h>
/** switch 多分支结构 输入等级成绩 输出相应的分数区间 */
int main()
{
	char grade;		//等级
	printf("Input your grade(A,B,C,D,E): ");
	grade = getchar();
	switch (grade)
	{
	case 'A': printf("A(90 -- 100)\n");
		break;
	case 'B': printf("B(80 -- 89)\n");
		break;
	case 'C': printf("C(70 -- 79)\n");
		break;
	case 'D': printf("D(60 -- 69)\n");
		break;
	case 'E': printf("E( < 60)\n");
		break;
	default:  printf("Input error!\n");
		break;
	}
	return 0;
}

运行结果(部分截图)
在这里插入图片描述
在这里插入图片描述
4.2 示例二:输入成绩等级,输出相应的分数区间(修改示例一中不区分大小写情况)

#include<stdio.h>
/** switch 多分支结构 输入等级成绩 输出相应的分数区间 大小写都可 */
int main()
{
	char grade;		//等级
	printf("Input your grade(A,B,C,D,E): ");
	grade = getchar();
	switch (grade)
	{
	case 'A': 
	case 'a': printf("A(90 -- 100)\n");
		break;
	case 'B': 
	case 'b': printf("B(80 -- 89)\n");
		break;
	case 'C': 
	case 'c': printf("C(70 -- 79)\n");
		break;
	case 'D': 
	case 'd': printf("D(60 -- 69)\n");
		break;
	case 'E': 
	case 'e': printf("E( < 60)\n");
		break;
	default:  printf("Input error!\n");
		break;
	}
	return 0;
}

运行结果(部分截图)
在这里插入图片描述
在这里插入图片描述

5. 总结

5.1 case 后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量。

case 20: 	  printf("...\n"); break;			// 正确
case 2+3:     printf("...\n"); break;			// 正确
case 'A':     printf("...\n"); break;			// 正确 字符和整数可以相互转换
case 'A'+23:  printf("...\n"); break;			// 正确 字符和整数可以相互转换
case 9.5:     printf("...\n"); break;			// 错误 不能为小数
case a:		  printf("...\n"); break;			// 错误 不能包含变量
case &a+10:   printf("...\n"); break;			// 错误 不能包含变量
case "error": printf("...\n"); break;			// 错误 不能为字符串

5.2 default 不是必须的。当没有 default 时,如果所有 case 都匹配失败,那么在 switch 中就什么都不执行,接着执行后续代码。
5.3 当第一个 case 后面没有语句或者没有 break 跳出时,则继续执行下一个 case 后面的语句,直到遇到 break 时在跳出 switch 结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值