C语言中,解决多分支选择问题

发布时间:2022-09-04编辑:zhushican阅读(308)

C语言中,解决多分支选择问题,除了可以利用条件语句的嵌套外,还可以采用switch语句来实现。Switch语句称为分支语句,又称为开关语句。其一般格式为:

switch(表达式){

    case 常量表达式1: 语句序列1;[break]

    case 常量表达式2: 语句序列2;[break]

    …

    case 常量表达式n: 语句序列n;[break]

   default:  语句序列n+1;

}

其执行过程为:先计算switch表达式的值,然后自上而下和case后的常量表达式的值进行比较,如果相等则执行其后的语句序列,假定入口是常量表达式2,那么该语句执行语句序列2,当语句序列2执行完毕后,若有break语句,则中断switch语句的执行,否则继续执行语句序列3、语句序列4,一直到语句序列n。如果没有和表达式的值相匹配的常量表达式,则执行default后的语句。

C语言中,解决多分支选择问题

注意:

(1)switchcasedefault都是构成多分支语句的关键字。[]表示break可有可无,break语句起跳出作用,若没有break语句则找到执行入口后将一直执行后面的所有case所带的语句,直到最后。

(2)如果能够列出表达式各种可能的取值,则语句中可省去default分支;否则最好不要省略default,因为default表示的是switch语句在没有找到匹配入口时的语句执行入口。

(3)case后的常量表达式的值实际上就是switch后括号内的表达式的各种可能的取值,其值必须互不相同

(4)switch后的表达式可以是任何表达式,一般为整型、字符型、枚举型表达式。

(5)switch语句的一般使用形式下,case出现的次序不影响执行结果。

(6)case后可包含多个执行语句,而且不必加{}

(7)switch可以嵌套。

(8)多个case可以共用一组执行语句,如:

switch(表达式){

          case 常量表达式1:

          case 常量表达式2: 

          case 常量表达式3:语句序列1;[break]

           …

          case 常量表达式n:  语句序列n;[break]

          default: 语句序列n+1;

  }

3-8】根据输入的数据判断星期几。


int main()

{

     int a;

     printf("input integer number:");

     scanf("%d",&a);

     switch (a)

    {

       case 1:printf("Monday\n");

       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");

    }

     return 0;

}

程序运行结果:

Input integer number: 5

Friday

在本实例中,“case 常量表达式”只相当于一个语句标号,表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch 语句,所以在每个case分支后面都要加一个break语句来实现这个功能。

3-9】根据学生成绩输出ABCDE


#include <stdio.h>

int main()

{

     int a,s;

     printf("Input the score:");

     scanf("%d",&s);

     a=s/10;

     switch (a){

     case 10:

     case 9:printf("A\n");  

     case 8:printf("B\n");  break;

     case 7:printf("C\n");  break;

     case 6:printf("D\n");  break;

     default:printf("E\n");

     }

     return 0;

}


程序运行结果:

Input the score:70

C

本例中前两个case语句共用一组执行语句。


评论