c语言字符串switch用法,C语言switch 语句的用法详解
搜索热词
C语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况。例如,输入一个整数,输出该整数对应的星期几的英文表示:
#include
int main(){
int a;
printf("Input integer number:");
scanf("%d",&a);
if(a==1){
printf("Monday\n");
}else if(a==2){
printf("Tuesday\n");
}else if(a==3){
printf("Wednesday\n");
}else if(a==4){
printf("Thursday\n");
}else if(a==5){
printf("Friday\n");
}else if(a==6){
printf("Saturday\n");
}else if(a==7){
printf("Sunday\n");
}else{
printf("error\n");
}
return 0;
}
运行结果:
Input integer number:3
Wednesday
C语言还提供了另外一种多分支选择的语句――switch 语句,它的基本语法格式如下:
switch(表达式){
case 常量表达式1: 语句 1;
case 常量表达式2: 语句 2;
......
case 常量表达式n: 语句 n;
default: 语句 n+1;
}
它的执行过程是:首先计算“表达式”的值,然后从第一个 case 开始,与“常量表达式x”进行比较,如果与当前常量表达式的值不相等,那么就不执行冒号后边的语句 x,一旦发现和某个常量表达式的值相等了,那么它会执行之后所有的语句,如果直到最后一个“常量表达式 n”都没有找到相等的值,那么就执行 default 后的“语句 n+1”。
需要注意的是,当找到一个相等的 case 分支后,会执行该分支以及之后所有分支的语句。例如:
#include
int main(){
int a;
printf("Input integer number:");
scanf("%d",&a);
switch(a){
case 1: printf("Monday\n");
case 2: printf("Tuesday\n");
case 3: printf("Wednesday\n");
case 4: printf("Thursday\n");
case 5: printf("Friday\n");
case 6: printf("Saturday\n");
case 7: printf("Sunday\n");
default:printf("error\n");
}
return 0;
}
运行结果:
Input integer number:4
Thursday
Friday
Saturday
Sunday
error
输入4,发现和第四个分支匹配,于是就执行第四个分支以及后面的所有分支。这显然不是我们想要的结果,我们希望只执行第四个分支,跳过后面的所有分支。
为了避免这种情况,C语言还提供了一个关键字 break,专门用于跳出switch语句。
switch 的分支语句一共有 n+1 种,而我们通常希望的都是选择其中的一个分支来执行,执行完后就结束整个 switch 语句,而继续执行 switch后面的语句,此时就可以通过在每个分支后加上 break 语句来实现了。如下:
switch (表达式){
case 常量表达式1: 语句1; break;
case 常量表达式2: 语句2; break;
......
case 常量表达式n: 语句n; break;
default: 语句n+1; break;
}
加了这个 break 语句后,一旦“常量表达式 x”与“表达式”的值相等了,那么就执行“语句 x”,执行完毕后,由于有了 break 则直接跳出 switch 语句,继续执行 switch 语句后面的程序了,这样就可以避免执行不必要的语句。
使用switch语句修改上面的代码:
#include
int main(){
int a;
printf("Input integer number:");
scanf("%d",&a);
switch(a){
case 1: printf("Monday\n"); break;
case 2: printf("Tuesday\n"); break;
case 3: printf("Wednesday\n"); break;
case 4: printf("Thursday\n"); break;
case 5: printf("Friday\n"); break;
case 6: printf("Saturday\n"); break;
case 7: printf("Sunday\n"); break;
default:printf("error\n"); break;
}
return 0;
}
运行结果:
Input integer number:4
Thursday
值得一提的是,由于default是最后一个分支,匹配后不会再执行其他分支,所以也可以不用break;语句。
以上就是对C语言switch语句的资料整理,学习 C语言条件语句的同学可以参考下。
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
c语言字符串switch用法,C语言switch 语句的用法详解相关推荐
- php中switch语句的理解,php中switch语句的使用详解
我们之前给大家介绍了关于php中switch语句的介绍,我们都知道php中switch语句是循环语句,是一个开关语句,那么很多朋友都只知道简单的switch开关语句的用法了,今天就带大家了解一下php ...
- 编程题50 习题6-8 单词首字母大写【浙大版《C语言程序设计(第4版)》题目集 详解教程】
编程题50 习题6-8 单词首字母大写[浙大版<C语言程序设计(第4版)>题目集 详解教程] 原题链接:习题6-8 单词首字母大写 (pintia.cn) 参考答案 #include< ...
- linux shell 字符串操作(长度,查找,替换)详解 BASH
linux shell 字符串操作(长度,查找,替换)详解 在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系 ...
- 字符串处理【AC自动机】 - 原理 AC自动机详解
字符串处理[AC自动机] - 原理 AC自动机详解 AC自动机(Aho-Corasick automaton)在1975年产生于贝尔实验室,是著名的多模匹配算法. 学习AC自动机,要有KMP和Trie ...
- 字符串处理【字典树】 - 原理 字典树详解
字符串处理[字典树] - 原理 字典树详解 字典树,又称Trie树.单词查找树,是一种树形结构,也是哈希树的一种变种,主要用于统计.排序和存储大量的字符串(但不限于字符串),所以经常被搜索引擎系统用于 ...
- C语言中定义常量的关键字是什么,C++_详解C语言中const关键字的用法,关键字const用来定义常量,如 - phpStudy...
详解C语言中const关键字的用法 关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变,我想一定有人有这样的疑问,C语言中不是有#define吗,干嘛还要用const ...
- c语言字符串文库总结,C语言字符串.ppt
C语言字符串.ppt ACM程序设计,福州大学至诚学院 冯新,第四讲,字符串处理,常用函数介绍,复制,char* strcpy char *s1, const char *s2; 将字符串s2复制到s ...
- c语言 字符串切片重组,C语言实现分割字符串
背景 遇到一个将字符串分割场景.以前从没有用c语言实现,都是使用python的split()函数,python处理起来很简单. split()方法语法: str.split(str="&qu ...
- c语言 字符串切片重组,c语言 字符串的拼接和分割实例
1.字符串的拼接 使用c的函数char *strcat(char *str_des, char *str_sou); 将字符串str_sou接在字符串str_des后面(放在str_des的最后字符和 ...
- linux 文件 字符集设置,Linux字符集和系统语言设置-LANG,locale,LC_ALL,POSIX等命令及参数详解...
博文说明[前言]: 本文将通过个人口吻介绍Linux字符集和系统语言设置,包括LANG,locale,LC_ALL,POSIX等命令及参数详解的相关知识,在目前时间点[2017年6月21号]下,所掌握 ...
最新文章
- Java Web中的Filter和Interceptor的区别
- 自我学习SSM框架集成(二)
- java离群值,监视-衡量Java中单线程复杂算法的最佳宏基准测试工具/框架是什么?...
- 浏览器解析html全过程详解
- Oracle索引简单介绍与示例
- Material 和 ShareMaterial 区别
- 解析Excel_Poi
- 【通俗易懂的通信】贝叶斯公式 全概率公式 及其理解
- 配电室智能监控系统设计及实现分析
- 博弈论笔记(0)—— 参考书籍及前置知识
- 基于steamworks获取steam用户头像
- html5的calc,CSS 计算属性 calc()的完整指南(下)
- 书单丨流量成本越来越高,6本书带你实现爆发式增长!
- 腾讯秀丽江山之长歌行服务器维护,37秀丽江山之长歌行服务器正式关服公告
- 国际青少年计算机技能大赛英语,竞赛:2017中学生英语能力、青少年信息学奥赛!...
- golang+uniapp 开发的一套微信小程序电商系统
- 我的世界java版的马难以驯服_最难驯服的我的世界呆萌宠物排行榜介绍
- Day12 编码与文件的简单操作方法
- 关于a21A11+a22A12+a23A13=0的证明
- WMIC命令的利用技巧
热门文章
- 计算机网络 网络性能优化技术 数据发送TSO/USO/GSO
- Psensor driver 三(校准)
- 2017十大科技关键词 人工智能依然火热
- 大学计算机打开文件过程演示实验记录表,实验5-操作系统进程与文件管理--实验报告表-x...
- 论文发表左下角添加作者信息
- Efficient RANSAC for Point-Cloud Shape Detection 点云形状检测的高效RANSAC法
- 学习笔记(10):ArcGIS之数字高程模型(DEM)分析上篇视频课程(GIS思维)-DEM的含义与应用...
- 万亿二手车金融市场,如何在寒冬中成为现象级企业
- 制造业SaaS多供应链系统:实现全场景数字化,赋能制造企业降本增效
- 编写程序。设银行定期存款年利率rate为2.25%,并已知存款为n年,存款本金为capital,编程计算n年后的本利之和deposit。要求年利率rate、存款年限n和存款本金capital从键盘输入