C语言switch语句的用法详解_c语言switch语句例题

C语言switch语句的用法详解_c语言switch语句例题C语言虽然没有限制ifelse能够处理的分支数量,但当分支过多时,用ifelse处理会不太方便,而且容易出现ifelse配对出错的情况。例如,输入一个整数,输出该整数对应的星期几的英文表示:#includeintmain(){inta;printf(“Inputintegernumber:”);scanf(“%d”,&a);if(a==1){printf(“Mo…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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语言条件语句的同学可以参考下。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/179267.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Windows编程(多线程)

    Windows编程(多线程)线程创建函数CreateThreadCreateThread是一种微软在WindowsAPI中提供了建立新的线程的函数,该函数在主线程的基础上创建一个新线程。线程终

    2021年12月13日
  • cunit教程linux,linux下CUnit使用

    cunit教程linux,linux下CUnit使用4.C++Test1)简介C++Test是一个功能强大的自动化C/C++单元级测试工具,可以自动测试任何C/C++函数、类,自动生成测试用例、测试驱动函数或桩函数,在自动化的环境下极其容易快速的将单元级的测试覆盖率达到100%。2)功能特性即时测试类/函数支持极端编程模式下的代码测试自动建立类/函数的测试驱动程序和桩调用自动建立和执行类/函数的测试用例提供快速加入和执行说明和功能性测试的框架执行自…

  • startservice生命周期_task scheduler 启动后停止

    startservice生命周期_task scheduler 启动后停止ExecutorService接口继承了Executor接口,定义了一些生命周期的方法Java代码publicinterfaceExecutorServiceextendsExecutor{ voidshutdown(); List<Runnable>shutdownNow(); booleanisShutdown(); bool…

  • 汉澳sinox不受openssl心血漏洞影响并分析修复其漏洞代码

    汉澳sinox不受openssl心血漏洞影响并分析修复其漏洞代码OpenSSL心血(HeartBleed)漏洞是openssl在2014-04-07发布的重大安全漏洞(CVE-2014-0160)这个漏洞使攻击者可以从server内存中读取64KB的数据,甚至获取到加密流量的密钥。用户的名字和password。以及訪问的内容。主要影响版本号OpenSSL1.0.1到OpenSSL1.0.1f以及OpenSSL1.0….

  • Android开发之startActivityForResult过时的替代方案

    Android开发之startActivityForResult过时的替代方案如上图所示:在api29中提示已过时,官方给出的替代方案是上面第二个红框的方法registerForActivityResult该怎么用呢?先看kotlin版本的写法:privatevalstartActivity=registerForActivityResult(ActivityResultContracts.StartActivityForResult()){//此处是跳转的result回调方法if..

  • java怎么表示绝对值(java求平均值的函数)

    下面要给大家分享的是三个输入一个数求绝对值的java实例,一起来看看用java求一个数的绝对值的完整代码吧。题目1java输入一个数,输出它的绝对值。代码实现1publicclass绝对值{publicstaticvoidmain(String[]args){System.out.println(“输入一个整数n:”);Scanners=newScanner(System.in…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号