关于Switch语句进出的理解

本文详细介绍了Switch语句的使用方法,包括其语法结构、如何进入不同的case条件以及如何退出Switch结构。通过具体示例展示了在不同情况下Switch语句的行为表现。

Switch是一种用于分支选择的语句,需要将每种情况用case语句列出来,然后再将整形表达式与case语句中的常量表达式配对,函数才会进入整形表达式与常量表达式相同的case语句。

相对于if语句,switch语句的限制较多,且实用性不大,像上面所介绍的一样,需要进行判断的表达式必须为整形,这一点就决定了它只能适合一部分情况。

对于switch函数,其实我们并不经常用,我们只需掌握三个重点即可。

①格式

Switch(整形表达式)

{

  Case常量表达式1:语块1;break;

Case常量表达式1:语块1;break;

Case常量表达式1:语块1;break;

Case常量表达式1:语块1;break;

……

Default:语块n+1;break;

}

写switch语句语法较为复杂,所以我们在用的时候一定要仔细,因为一点疏忽大意就会与正确的结果相距千里。

例如下面函数

int b;

         switch(inta=10)

         {

         case0&&10:b=10;

         case1:b=20;

         case2:b=30;

         case3:b=40;

         default:b=0;break;

         }

因为这个函数在前面的case语句中没有写break,这个函数在进入第三个case2后,会一直执行后面的函数,继续运行case3、default,b会被赋值成30、40到最后赋值为0;这时遇到break,结束赋值,所以最后b的值会是0。

②怎么进

只有当表达式的值跟标签值一样才会进

③怎么出

出函数有两种方式:第一种是遇到break;第二种是switch结束。
要用到栈和队列地操作。这里,由于一个车场的最大容量是一定的,且车场最多执行的操作是插入和删除操作,所以用顺序存储结构可以带来更大益处。为了防止队列中出现“假溢出”现象,这里采用了循环队列。在模拟汽车这个对象时,进行了简化处理,只取最核心的两个数据项:车牌号和车主姓名。具体数据结构定义如下: #define MAX_SIZE 20 typedef struct car{ char num[10]; char name[10]; }Car; //汽车的数据结构 typedef struct{ Car data[MAX_SIZE]; int n; // 设定栈的容量 int top; }Stack; //顺序栈 typedef struct{ Car data[MAX_SIZE]; int n; //队列容量设定 int num; //当前通道上的车辆数 int front,rear; }Queue; //循环队列 四、功能函数设计 (1)停车场初始化函数 InitCarpark() 此函数也可以作为车辆成批入站函数,因为一个车场刚开始投入运行的时候会有很多车进来,这也是设计此函数最重要的一个原因。每行输入一个汽车信息,最后结束的时候输入“##”即可。前面表示汽车的车牌号,后面表示车主姓名,中间用空格隔开。当输入汽车的数目超过规定的最大容量的时候(如果开始设置最大容量,默认值为系统申请空间的最大值 MAX_SIZE 为 20),自动检测条件,给出相关提示信息。 (2)单个车辆入站 InsertCar() 当系统正常投入运行后,会有零散的车辆进进出出,如还用成批输入方式的话,将会带来一定的麻烦。此函数具有函数 InitCarpark()几乎所有的功能,实现较简单。 (3)车站内信息显示函数 ShowCar() 如果车场本身就是空的,没有汽车,那么也就存在查看汽车信息了。故本函数一开始进行合理性检查,如果条件成立,拒绝执行显示信息操作,给出出错信息后返回主界面。前面提到,车站内信息包括两部分:车场内停放的车辆和在外面通道上等停的车辆。因为通道上也一定会有车,程序输出车场内的所有车信息后,自动进行判断通道上是否有车辆。如果有车辆的话,继续输出停在通道上的车信息。 (4)车辆出站函数 ExitCar() 同上,首先进行合理性检查。这里的检查包括两部分:车场非空且输入的车牌号在车场中。如果一切条件满足,则执行退车操作。最后,检查通道上是否有车等待。如果通道为空,程序会自动把排在最前面的车调入场内。 其中,退车的算法过程如下: ① 前面检测条件满足时,执行如下操作:由于车场很窄,当一辆车要出场时,排在它后面的车需先出场,等要退出的车开走后,刚才为它让道的那些车再按原次序进入车场。难看出,这里需要创建一个临时栈,用于保存让道车辆信息。 ② 在前面的合理性检查中,已经定位到出场车辆所在位置,从栈顶开始,到所在位置前一个结束,车场内执行出栈操作,临时栈结构执行入栈操作。 ③ 在当前位置执行出栈操作,即可实现指定的车辆出场。 ④ 当临时栈空时,依次执行:临时栈退栈,车场内入栈。 (5)车站模拟系统相关功能设定函数 SetCar() 首先用一个 do-while 循环,得到一个合理值,修改相关参数即可。这里有一个防错设计:当输入的最大容量小于车场内当前车辆数时,拒绝执行修改。 (6)车站管理系统主菜单函数 carmenu() 此函数是用户与系统之间的一个接口,用户通过它来选择相关操作。用 printf 语句打印出供选择项目后,用回显的 getch()得到一个字符,用开关语句 switch 进行分类,判断用户想要执行的操作,然后执行相关功能函数即可。 (7)主函数 main() 为分别表示车场和通道的两个指针变量申请空间,分别调用相应的初始化函数,得到一个合理解,然后程序流向主供选菜单,供用户选择执行。 要图标
最新发布
12-18
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值