switch的相关知识点整合

1.switch多分支选择语句的一般格式:
switch(判别表达式)
{  case 常量表达式1:语句1
   case 常量表达式2:语句2
   ......
   case 常量表达式n:语句n
   default:   语句n+1
}

执行过程:首先求解判别表达式的值,然后从上至下依次与每个case后的常量比较。如果相等,那么就执行这一分支及其以后的所有分支。如果都不等,那么就执行default分支。

例子:
用字符来代表成绩水平,规定A代表[90-100]、B代表[80-90)、C代表[70-80)、D代表[60-70)、E代表[0-60)。
请编程输入一个字符,输出这个字符所代表的分数范围。若输入的字符不是ABCDE,输出:Error!
解答:
#include<stdio.h>
int main()
{
    char s;
    scanf("%c",&s);
    switch(s){
        case 'A': printf("[90-100]"); break;
        case 'B': printf("[80-90)");  break;
        case 'C': printf("[70-80)");  break;
        case 'D': printf("[60-70)");  break;
        case 'E': printf("[0-60)");   break;
        default:  printf("Error!");
    }
    return 0;
}

2.注意事项(非常重要)
(1)switch后的括号中的表达式必须是整型、字符型或枚举型,不能是实型等无序不可数的类型。其中{}不能省略。
(2)case后必须是常量或常量表达式,不能是变量。
(3)每个case是一个分支,case后只能是常量,常量后是冒号。冒号的后面就是分支语句序列,如果是多条语句,不用定义成复合语句。default也是一个分支,该分支也可以省略。
(4)break语句
break语句的一般形式是:break;
它的功能是跳出switch结构,这样就可以阻止以后的分支执行了。
(5)default也起标号的作用,代表所有case标号之外的标号,即default可以出现在语句体中任何标号位置上,而不会影响程序的执行结果。在switch语句体外可以没有default标号。
(6)其中case后的常量表达式不能是取值范围
例子:
用字符来代表成绩水平,规定A代表[90-100]、B代表[80-90)、C代表[70-80)、
D代表[60-70)、E代表[0-60)。请编程输入一个成绩(整数),输出代表该成绩的
字符。若输入的数据不在0-100之间,输出X。
#include<stdio.h>
int main()
{
    int a;
    scanf("%d",&a);
    switch(a/10){
        case 10:  printf("A"); break;
        case 9:   printf("A"); break;
        case 8:   printf("B"); break;
        case 7:   printf("C"); break;
        case 6:   printf("D"); break;
        case 5:   printf("E"); break;
        case 4:   printf("E"); break;
        case 3:   printf("E"); break;
        case 2:   printf("E"); break;
        case 1:   printf("E"); break;
        case 0:   printf("E"); break;
        default:  printf("X");
    }
    return 0;
}
显然如果case要判断多个值,一个一个写太慢了,所以可以写case 1:case 2:case 3:......case n:printf(“?”);
#include<stdio.h>
int main()
{
    int a;
    scanf("%d",&a);
    switch(a/10){
        case 10:  printf("A"); break;
        case 9:   printf("A"); break;
        case 8:   printf("B"); break;
        case 7:   printf("C"); break;
        case 6:   printf("D"); break;
        case 0:case 1:case 2:case 3:case 4:case 5:   printf("E"); break;
        default:  printf("X");
    }
    return 0;
}

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值