搜索热词

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 语句的用法详解相关推荐

  1. php中switch语句的理解,php中switch语句的使用详解

    我们之前给大家介绍了关于php中switch语句的介绍,我们都知道php中switch语句是循环语句,是一个开关语句,那么很多朋友都只知道简单的switch开关语句的用法了,今天就带大家了解一下php ...

  2. 编程题50 习题6-8 单词首字母大写【浙大版《C语言程序设计(第4版)》题目集 详解教程】

    编程题50 习题6-8 单词首字母大写[浙大版<C语言程序设计(第4版)>题目集 详解教程] 原题链接:习题6-8 单词首字母大写 (pintia.cn) 参考答案 #include< ...

  3. linux shell 字符串操作(长度,查找,替换)详解 BASH

    linux shell 字符串操作(长度,查找,替换)详解 在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系 ...

  4. 字符串处理【AC自动机】 - 原理 AC自动机详解

    字符串处理[AC自动机] - 原理 AC自动机详解 AC自动机(Aho-Corasick automaton)在1975年产生于贝尔实验室,是著名的多模匹配算法. 学习AC自动机,要有KMP和Trie ...

  5. 字符串处理【字典树】 - 原理 字典树详解

    字符串处理[字典树] - 原理 字典树详解 字典树,又称Trie树.单词查找树,是一种树形结构,也是哈希树的一种变种,主要用于统计.排序和存储大量的字符串(但不限于字符串),所以经常被搜索引擎系统用于 ...

  6. C语言中定义常量的关键字是什么,C++_详解C语言中const关键字的用法,关键字const用来定义常量,如 - phpStudy...

    详解C语言中const关键字的用法 关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变,我想一定有人有这样的疑问,C语言中不是有#define吗,干嘛还要用const ...

  7. c语言字符串文库总结,C语言字符串.ppt

    C语言字符串.ppt ACM程序设计,福州大学至诚学院 冯新,第四讲,字符串处理,常用函数介绍,复制,char* strcpy char *s1, const char *s2; 将字符串s2复制到s ...

  8. c语言 字符串切片重组,C语言实现分割字符串

    背景 遇到一个将字符串分割场景.以前从没有用c语言实现,都是使用python的split()函数,python处理起来很简单. split()方法语法: str.split(str="&qu ...

  9. c语言 字符串切片重组,c语言 字符串的拼接和分割实例

    1.字符串的拼接 使用c的函数char *strcat(char *str_des, char *str_sou); 将字符串str_sou接在字符串str_des后面(放在str_des的最后字符和 ...

  10. linux 文件 字符集设置,Linux字符集和系统语言设置-LANG,locale,LC_ALL,POSIX等命令及参数详解...

    博文说明[前言]: 本文将通过个人口吻介绍Linux字符集和系统语言设置,包括LANG,locale,LC_ALL,POSIX等命令及参数详解的相关知识,在目前时间点[2017年6月21号]下,所掌握 ...

最新文章

  1. Java Web中的Filter和Interceptor的区别
  2. 自我学习SSM框架集成(二)
  3. java离群值,监视-衡量Java中单线程复杂算法的最佳宏基准测试工具/框架是什么?...
  4. 浏览器解析html全过程详解
  5. Oracle索引简单介绍与示例
  6. Material 和 ShareMaterial 区别
  7. 解析Excel_Poi
  8. 【通俗易懂的通信】贝叶斯公式 全概率公式 及其理解
  9. 配电室智能监控系统设计及实现分析
  10. 博弈论笔记(0)—— 参考书籍及前置知识
  11. 基于steamworks获取steam用户头像
  12. html5的calc,CSS 计算属性 calc()的完整指南(下)
  13. 书单丨流量成本越来越高,6本书带你实现爆发式增长!
  14. 腾讯秀丽江山之长歌行服务器维护,37秀丽江山之长歌行服务器正式关服公告
  15. 国际青少年计算机技能大赛英语,竞赛:2017中学生英语能力、青少年信息学奥赛!...
  16. golang+uniapp 开发的一套微信小程序电商系统
  17. 我的世界java版的马难以驯服_最难驯服的我的世界呆萌宠物排行榜介绍
  18. Day12 编码与文件的简单操作方法
  19. 关于a21A11+a22A12+a23A13=0的证明
  20. WMIC命令的利用技巧

热门文章

  1. 计算机网络 网络性能优化技术 数据发送TSO/USO/GSO
  2. Psensor driver 三(校准)
  3. 2017十大科技关键词 人工智能依然火热
  4. 大学计算机打开文件过程演示实验记录表,实验5-操作系统进程与文件管理--实验报告表-x...
  5. 论文发表左下角添加作者信息
  6. Efficient RANSAC for Point-Cloud Shape Detection 点云形状检测的高效RANSAC法
  7. 学习笔记(10):ArcGIS之数字高程模型(DEM)分析上篇视频课程(GIS思维)-DEM的含义与应用...
  8. 万亿二手车金融市场,如何在寒冬中成为现象级企业
  9. 制造业SaaS多供应链系统:实现全场景数字化,赋能制造企业降本增效
  10. 编写程序。设银行定期存款年利率rate为2.25%,并已知存款为n年,存款本金为capital,编程计算n年后的本利之和deposit。要求年利率rate、存款年限n和存款本金capital从键盘输入