`
huiqinbo
  • 浏览: 344767 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

switch-case语句用法

阅读更多
2007-12-25 08:11

if语句处理两个分支,处理多个分支时需使用if-else-if结构,但如果分支较多,则嵌套的if语句层就越多,程序不但庞大而且理解也比较困难.因此,C语言又提供了一个专门用于处理多分支结构的条件选择语句,称为switch语句,又称开关语句.使用switch语句直接处理多个分支(当然包括两个分支).其一般形式为:

引用
switch(表达式)
{
      case 常量表达式1:
         语句1;
      break;
     
      case 常量表达式2:
         语句2;
      break;

 

……
      case 常量表达式n:
         语句n;
      break;

      default:
         语句n+1;
      break;
}



switch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句;若圆括号中表达式的值与所有case后面的常量表达式都不等,则执行default后面的语句n+1,然后退出switch语句,程序流程转向开关语句的下一个语句.如下程序,可以根据输入的考试成绩的等级,输出百分制分数段:

引用
switch(grade)
{
    case 'A': /*注意,这里是冒号:并不是分号;*/
       printf("85-100\n");
    break; /*每一个case语句后都要跟一个break用来退出switch语句*/
    case 'B': /*每一个case后的常量表达式必须是不同的值以保证分支的唯一性*/
       printf("70-84\n");
    break;
    case 'C':
       printf("60-69\n");
    break;
    case 'D':
       printf("<60\n");
    break;
    default:
       printf("error!\n");
}

(2) 如果在case后面包含多条执行语句时,也不需要像if语句那样加大括号,进入某个case后,会自动顺序执行本case后面的所有执行语句.如:

引用
{
    case 'A':
     if(grade<=100)
       printf("85-100\n");
     else
       printf("error\n");
    break;
……

(3) default总是放在最后,这时default后不需要break语句.并且,default部分也不是必须的,如果没有这一部分,当switch后面圆括号中表达式的值与所有case后面的常量表达式的值都不相等时,则不执行任何一个分支直接退出switch语句.此时,switch语句相当于一个空语句.例如,将上面例子中switch语句中的default部分去掉,则当输入的字符不是"A","B","C"或"D"时,此switch语句中的任何一条语句也不被执行.

(4) 在switch-case语句中,多个case可以共用一条执行语句,如:

引用
……
case 'A':
case 'B':
case 'c':
printf(">60\n");
break;
……

在A,B,C3种情况下,均执行相同的语句,即输出">60".

(5) 最开始那个例子中,如果把每个case后的break删除掉,则当greak='A'时,程序从printf("85-100\n")开始执行,输出结果为:

引用
85-100
70-84
60-69
<60
error

这是因为case后面的常量表达式实际上只起语句标号作用,而不起条件判断作用,即"只是开始执行处的入口标号".因此,一旦与switch后面圆括号中表达式的值匹配,就从此标号处开始执行,而且执行完一个case后面的语句后,若没遇到break语句,就自动进入下一个case继续执行,而不在判断是否与之匹配,直到遇到break语句才停止执行,退出break语句.因此,若想执行一个case分之后立即跳出switch语句,就必须在此分支的最后添加一个break语句.

引用
main() /*完成两个数简单的四则运算*/
{
   float a,b;
   char c1;
   printf("Please enter a,b and op:");
   scanf("%f%c%f",&a,&c1,&b);
   switch(c1)
   {
      case '+':
        printf("%f+%f=%f\n",a,b,a+b);
      break;
      case '-':
        printf("%f-%f=%f\n",a,b,a-b);
      break;
      case '*':
        printf("%f*%f=%f\n",a,b,a*b);
      break;
      case '/':
        if(b!=0.0) /*分母不能等于0*/
          printf("%f/%f=%f\n",a,b,a/b);
        else
        printf("error!\n");
      break;
      default:
        printf("error!\n");
      break;
   }
}
分享到:
评论

相关推荐

    计算机二级C语言考点18switch-case语句.pdf

    在文档的示例中,我们可以看到不同的switch-case语句用法。例如: - switch(x) { case 0: ... case 1: ... default: ... } - switch(a+b) { case 1: ... default: ... } - switch(a*a+b*b) { case 1: ... case 0: .....

    MATLAB中的switch-case判断语句与for循环语句.md

    #### 使用方法 要使用这个函数,只需传递一个包含数字的向量作为参数,然后获取相应的输出结果: ```matlab numbers = [0, 1, 2, 3, 4]; % 包含数字的向量 printNumberWords(numbers); % 调用函数 ``` 在这个示例...

    PHP程序设计-3期(KC016) 2.6.1条件控制switch-case常见问题.docx

    解决方法是确保`case`后的值在编写时已经确定,或者在`switch`之前先将变量转换为常量。 问题2:不会使用`break`来中断 `break`语句在`switch-case`结构中用于跳出当前`switch`块,防止执行后续的`case`。如果忘记...

    PHP程序设计-3期(KC016) 2.6.1条件控制switch-case课后习题.doc

    在给定的课后习题中,我们看到的是一个使用`switch-case`解决问题的例子,旨在练习和理解这个控制结构的用法。 首先,让我们详细了解一下`switch-case`语句的基本语法: ```php switch (expression) { case value...

    switch+case语句例子成绩

    执行完代码块后,通常使用 `break` 语句跳出 `switch` 语句,防止执行后续的 `case`。如果没有匹配的 `case`,则执行 `default` 代码块(可选)。 在描述中的例子中,`switch` 语句的 `expression` 是 `score / 10`...

    switch的用法和短语例句文档集

    switch-case语句用法.txt3努力奋斗,天空依旧美丽,梦想仍然纯真,放飞自我,勇敢地飞翔于梦想的天空,相信自己一定做得更好。4苦忆旧伤泪自落,欣望梦愿笑开颜。5懦弱的人害怕孤独,理智的人懂得享受孤独switch-...

    用函数指针替代Switch/Case语句的程序设计方法

    单片机程序中,当Switch/Case语句分支较多、处理代码较长、处理情况较为复杂时,逻辑修改和...针对该问题,本文给出了使用函数指针替代Switch/Case语句的实现思路以及相对应的代码模型,为其他类似的代码实现提供参考。

    Android中的工厂模式(减少if-esle和switch-case)

    当这些条件增多时,`if-else`或`switch-case`语句会变得越来越庞大。工厂模式能够帮助我们避免这种情况,通过定义一个工厂接口或抽象类,然后创建一系列实现该接口的具体工厂,每个工厂负责创建特定类型的对象,这样...

    Python-switchcase用纯Python实现的SwitchCase结构

    标题提到的"Python-switchcase"是一个项目,旨在通过纯Python代码实现一个类似于`switch-case`的功能。下面将详细介绍如何实现以及使用这样的结构。 在Python中,`switch-case`的常见实现方法是使用字典...

    C语言中分支结构:if语句、if-else语句和switch语句的使用方法.docx

    C语言中分支结构:if语句、if-else语句和switch语句的使用方法 C语言中分支结构是一种非常基本但非常重要的编程结构,它允许程序根据条件执行不同的代码块。在C语言中,分支结构有三种基本类型:if语句、if-else...

    PyPI 官网下载 | switchcase-1.0.tar.gz

    例如,下面是一个使用`switchcase`库的例子: ```python from switchcase import Case def process_value(value): with Case() as switch: switch( case(1, lambda: print('Value is 1')), case(2, lambda: ...

    python中Switch/Case实现的示例代码

    可以使用if…elif…elif..else序列来代替switch/case语句,这是大家最容易想到的办法。但是随着分支的增多和修改的频繁,这种代替方式并不很好调试和维护。 方法一 通过字典实现 def foo(var): return { 'a': 1...

    最新MATLAB函数句柄和M文件.pdf

    在本章中,我们将详细介绍 MATLAB 函数句柄和 M 文件的概念、创建和使用方法,并通过实例讲解如何应用这些概念来解决实际问题。 6.1 MATLAB 控制流 MATLAB 控制流是 MATLAB 编程语言中的一种控制结构,用于控制...

    Java 零基础控制语句 - switch 语句.md

    为了更好地理解 `switch` 语句的工作原理,我们来看一个简单的示例,这个示例展示了如何使用 `switch` 来确定一周中的某一天: ```java public class Main { public static void main(String[] args) { int day =...

    Springboot消除switch-case过程解析

    在Spring Boot应用中,我们经常遇到需要根据不同的条件执行不同逻辑的情况,这通常会导致大量使用`switch-case`或`if-else`语句。然而,这样的代码结构在长期维护和扩展时可能会变得难以管理。本篇文章将探讨如何...

    Golang中switch语句和select语句的用法教程

    switch语句提供了一个多分支条件执行的方法。每一个case可以携带一个表达式或一个类型说明符。前者又可被简称为case表达式。因此,Go语言的switch语句又分为表达式switch语句和类型switch语句。 1、表达式switch...

    16. MATLAB:IF、SWITCH、FOR、WHILE。:如何在MATLAB 中使用IF-ELSE、SWITCH-CASE、FOR 函数。-matlab开发

    在 MATLAB 中,SWITCH-CASE 结构提供了一种多路选择的方法。基本语法如下: ```matlab switch expression case value1 % 当 expression 的结果等于 value1 时执行的代码 case value2 % 当 expression 的结果...

    c语言switch case语句.docx 代码

    下面我们将详细探讨`switch`和`case`语句的用法、特点以及注意事项。 1. **语法结构** `switch`语句的基本语法如下: ```c switch(expression) { case value1: // statements when expression equals value1 ...

    C语言中的switch语句基本用法

    * switch语句的case语句必须是常量值。 * switch语句的default语句是可选的。 * break语句必须在每个case语句的末尾。 switch语句是C语言中的一种非常有用的控制结构,能够简化代码,提高代码的可读性和维护性。...

Global site tag (gtag.js) - Google Analytics