C语言程序设计-[7] switch语句分支结构

多路分支switch-case结构相对复杂,需要将语句形式和执行过程进行逐一讲解,尤其是break在switch语句中的使用。通过示例对比有无break的区别,从而理解break的含义和作用。

switch多路分支结构及其应用是重难点,最后需要通过具体示例来讲解switch的应用。

1、switch结构形式

注1:switch()中的表达式是有值的,且与常量1...常量n的类型相同;

注2:当switch()中的表达式值与某个case后的常量相等时,则执行相应的语句序列。若后面有break,则执行break跳出一层switch结构;若后面没有break,则继续执行下一个case后的语句,因为switch()中的表达式不再与case后的常量进行比较大小了。

注3:当switch()中的表达式值与所有case后的常量都不相等时,则执行default后的语句,且default可以放在任意位置,一般都是放在所有case之后。

注4:case与常量之间有一个空格,且常量后面有:号。

2、有无break的区别

注:由于i=10,所以执行case 10后面的i+=1,即i=i+1=10+1=11。然后执行break跳出一层switch结构,即printf()上面的}后面。最后执行printf()输出结果为i=11。

注:由于i=10,所以执行case 10后面的i+=1,即i=i+1=10+1=11。然后继续执行case 11后面的i+=1,以及default后面的i+=1,即得到i=13,因为switch(i)中的i值不再与case常量进行比较了。最后执行printf()输出结果为i=13。

3、可与if-elseif-else相互转换

上节课我们讲了一个成绩分级的if-else-if代码:

#include "stdio.h"

int main()
{
	int score;
	scanf("%d",&score);
	if(score>=90) printf("A");
	else if(score>=80) printf("B");
	else if(score>=70) printf("C");
	else if(score>=60) printf("D");
	else printf("E");
	return 0;
}

它可以转换为switch代码形式,如下:

#include "stdio.h"

int main()
{
	int score,t;
	scanf("%d",&score);
	t=score/10; //得到10、9、8、7、6、5... 
	switch(t)
	{
		case 10:;
		case 9: printf("A"); break;
		case 8: printf("B"); break;
		case 7: printf("C"); break;
		case 6: printf("D"); break;
		default: printf("E");
	}
	return 0;
}

注1:从上面看,case 10和case 9共用了“printf("A"); break;”,因为存在分数为100分的情况;

注2:default语句后面没有break,因为这里default语句放在最后,后面直接就是},意味switch结构结束了,没有必要再加break。

运行结果如下:

 

与成绩分级的if-else-if代码结果相同。

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值