5-4. 多重选择,switch的使用

  • 学习人数 30K+
  • 适合所有人群学习
avatar
林耿亮

你好编程主讲老师

1. 航空字母读法

在航空通讯中,经常会出现信号失真和衰落现象,再加上人们口音的不同,很容易发生误听差错。尤其是在26个英文字母中,如BD、 PT、GJ、SX等读音相似的最容易被听错。为此,在航空通讯中,常把一个字母,读成一个对应的单词。

例如:B读成bravo,D读成delta。

下表为字母A到G的航空字母读法:

字母 读法
A alpha
B bravo
C charlie
D delta
E echo
F foxtrot
G golf

2. 字符到航空字母单词转换


需求:

编写一个程序,输入字母,输出航空字母单词。


很显然这个程序可以使用if嵌套来写。为了简单清晰,我们省略if的括号,写成else if的形式。

#include <stdio.h>
int main()
{
    char c;
    scanf("%c", &c);
    if(c == 'a')
        printf("alpha\n");
    else if (c == 'b')
        printf("bravo\n");
    else if (c == 'c')
        printf("charlie\n");
    else if (c == 'd')
        printf("delta\n");
    else if (c == 'e')
        printf("echo\n");
    else if (c == 'f')
        printf("foxtrot\n");
    else if (c == 'g')
        printf("golf\n");
    else
        printf("i don't know\n");
    return 0;
}

3. switch语句

除了用if嵌套,C语言还提供switch语句,switch更适合这种情形,可以使得代码更加清晰明了。

#include <stdio.h>
int main()
{
    char c;
    scanf("%c", &c);
    switch(c)
    {
        case 'a': 
            printf("alpha\n");
            break;
        case 'b': 
            printf("bravo\n");
            break;
        case 'c': 
            printf("charlie\n");
            break;
        case 'd': 
            printf("delta\n");
            break;
        case 'e': 
            printf("echo\n");
            break;
        case 'f': 
            printf("foxtrot\n");
            break;
        case 'g': 
            printf("golf\n");
            break;
        default: 
            printf("i don't know\n\n");
    }
    return 0;
}

我们来看一下switch的使用公式:

switch(整型表达式)
{
    case 整型常量1:
        语句
    case 整型常量2:
        语句
    case 整型常量3:
        语句
    case 整型常量4:
        语句
    case 整型常量5:
        语句
    default:
        语句
    ...
}

字符型也是一种整型。

switch的跳转步骤:

  1. switch会先计算括号内的整型表达式结果。
  2. 依次对比case中的常量,是否等于整型表达式的结果。
  3. 若不相等,对比下一个case
  4. 若相等,跳转到这个case
  5. 若没有相等的,跳转到default

swtich语句的几个注意事项:

  1. switch后面的括号里面只能填一个整型表达式
  2. case后的常量不能有重复的。
  3. 可以没有default

switch示例