当前位置: 首页 > news >正文

C语言程序——Switch分支选择程序

文章目录

  • 前言
  • 一、switch的使用
  • 二、程序实例
    • 1.程序代码
    • 2.运行结果
    • 3.结果分析
  • 三、拓展应用
        • 1.switch中的break
        • 2.switch语句执行过程
  • 总结


前言

条件分支比较多的时候,使用if语句时嵌套的层数多,使程序冗长可读性降低。switch语句称为分支语句,如果题目中的多条件是有规律的,则可以采用switch语句来实现。


一、switch的使用

switch语句不能根据表达式的取值范围做出选择,所以使用的时候会有很大的局限性。让我们根据本次的实例了解switch的使用。

二、程序实例

从键盘上输入0~7数字字符,转化为相对应的星期输出。0——Sunday;1——Monday;2——Tuesday;3——Wednesday;4——Thursday;5——Friday;6——Saturday。
根据输入的字符不同,有不同的输出形式.。switch语句是一条复合语句,因此一对花括号是必须书写的,另外switch、case、default和break都是构成switch多分支结构的关键字,[]表示语句中的关键字break、default可有可无。其中的表达式是任意类型的表达式。case关键字和其后的整型常量表达式中间的应有空格,case分支中整型常量表达式只能由整型常量构成。switch语句的语法形式如下;

switch(表达式)
{
	case整型常量表达式1:语句组1[break]
	case整型常量表达式2:语句组2[break]
			
case整型常量表达式n:语句组n[break]
[default]:语句组n+1
}

switch语句是复合语句,花括号中间包含switch语句构成的必要部分,另外switch、case、default和break是构成switch多分支结构的关键字。【】表示语句中的关键字break、default可有可无。其中表达式是任意类型的表达式,case关键字和其后的整型常量表达式中间应有空格,case分支中整型常量表达式只能由整型常量构成。

注意:语句组可以是单条语句,也可以是多条语句,这一点区别于if…else语句,if…else结构中的两个分支只能是单条语句。

程序实例是输入数字,输出星期,可以看出实例中的条件十分适合利用switch语句来设计实现,设计步骤:

  1. 数据:输入字符c,字符范围为0~7。
  2. 操作:字符变量c作为switch的表达式,在各个case分支中常量为0~7,分支语句中输出各个星期代表的常量。

1.程序代码

#include "stdio.h"
void main() { 
	char c;								/*定义字符型变量*/
	printf("please input \'0\' to \'9\':");			/*输入提示*/
	c=getchar();							/*用getchar()输入字符*/
	switch(c) {								/*根据c决定输出结果*/
		case '0':printf("\nSunday\n");break;
		case '1':printf("\nMonday\n");break;
		case '2':printf("\nTuesday\n");break;
		case '3':printf("\nWednesday\n");break;
		case '4':printf("\nThursday\n");break;
		case '5':printf("\nFriday\n");break;
		case '6':printf("\nSaturday\n");break;
		default:printf("error\n");
		}
}

2.运行结果

switch分支选择星期

3.结果分析

switch语句的执行过程为:计算switch表达式的值C,自上而下寻找各个case常量后面是否有和c相等的常量,找到执行case后面的语句组。假如输入数据为1,和第二个case后面常量表达式相同,程序执行语句组2 的分支,当语句组2执行完毕后,若有break语句,则中断switch语句的执行;否则继续执行语句组3,直到遇到break或者执行到switch语句的最后一条;如果没有和表达式的值相匹配的整型常量表达式,则执行default后的语句组。

三、拓展应用

1.switch中的break

对于switch分支语句中的break,要注意break不属于语句的一部分,程序中也可以没有break语句,那么会有不同的执行结果。例如本程序实例中如果去掉break语句,输入4以后,程序的输出结果为:

Thursday
Friday
Saturday

2.switch语句执行过程

switch语句执行过程的流程会贯穿各个case标签,而不是停留在单个case标签,除非遇见break语句终止流程,或者语句执行完毕。


总结

以上就是本文全部的内容,本文仅仅简单介绍了switch分支选择语句的使用,文章有不足的地方请在评论区留言讨论。

相关文章:

  • SpringBoot+Vue项目大学生心理服务系统
  • go语言使用grpc
  • 研究生英语单词学习——Learning English
  • 【Java设计模式 规范与重构】 六 代码重构小结
  • ShardingSphere水平分片、多表关联、绑定表、广播表
  • SSM框架速成2——Spring5速成总结
  • 力扣第312场周赛题解:
  • MySQL流程控制函数
  • GB/T28181-2016基于RTP的视音频数据封装和技术实现
  • String类的详解
  • C/C++新手看过来----新手问题汇总分析
  • C语言 数组作为函数参数
  • 软件测试【秋招面试】字节跳动等各类大厂—面经
  • 【算子2】spark(四):spark core:trans算子中key-value类型的算子使用说明
  • 9.25
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • ➹使用webpack配置多页面应用(MPA)
  • Angular 2 DI - IoC DI - 1
  • Angular4 模板式表单用法以及验证
  • co.js - 让异步代码同步化
  • co模块的前端实现
  • CSS居中完全指南——构建CSS居中决策树
  • HTTP--网络协议分层,http历史(二)
  • JDK 6和JDK 7中的substring()方法
  • miaov-React 最佳入门
  • python大佬养成计划----difflib模块
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • SQL 难点解决:记录的引用
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • Web标准制定过程
  • 每天10道Java面试题,跟我走,offer有!
  • 前端性能优化--懒加载和预加载
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 容器镜像
  • ###项目技术发展史
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (十一)图像的罗伯特梯度锐化
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转载)CentOS查看系统信息|CentOS查看命令
  • **CI中自动类加载的用法总结
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .net经典笔试题
  • @EventListener注解使用说明
  • @SpringBootApplication 包含的三个注解及其含义
  • [ 常用工具篇 ] POC-bomber 漏洞检测工具安装及使用详解
  • [20150321]索引空块的问题.txt
  • [AIGC] 如何建立和优化你的工作流?
  • [BSGS算法]纯水斐波那契数列
  • [C/C++]数据结构 循环队列
  • [cocos2d-x]关于CC_CALLBACK