当前位置: 首页 > 文档资料 > C 语言程序设计 >

switch多分支

优质
小牛编辑
144浏览
2023-12-01

switch多分支

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>

//01.if-else if-else内容总结:
//  1.用于多分支判断情况:
//      多个入口,单个出口
//  2.用于区间范围判断
//      判断情况模糊
//  3.作为区间判断的时候需要
//      注意区间范围必须有序
//  4.没有任何返回值
int main01(void)
{                 
    int num = 9;
    //if-else if-else-->很容易混淆,不匹配情况
    //switch-->不容易混淆,绝对匹配情况
    if (num == 1)
    {
        if (1 > 0) {}else {}
    }
    else if (num == 2)
    {
        if (2 > 0) {}else {}
    }
    else if (num == 3)
    {
    }
    else if (num == 4)
    {
    }
    else if (num == 5)
    {
    }
    else if (num == 6)
    {
    }
    else
    {
        //处理上述之外的情况
    }

    system("pause");
    return 1;
}

//02.switch内容总结:
//  1.用于多分支判断情况:
//      多个入口,单个出口
//  2.用于等值判断
//      待判断变量必须和常量
//      等值才能匹配成功
//  3.特殊情况分析:
//      (1).每种情形完成之后需要添加break语句
//          如果没有break语句,会发生穿透现象
//      (2).穿透现象可以用于离散区间模拟
//          类似于区间形式的判断(前提有序)
//      (3).无论default语句放在哪个位置
//          它都是最后才进行判断的,只有排除了
//          所有情况之后才会到default语句
//      (4).switch语句只有一个出口
//      (5).只要没有break关键字,但是存在default
//          语句,那么最后执行的一定是default语句
//          如果最后执行的default语句后面没有break
//          而且该default语句执行之后会发生穿透现象
//          直到遇到break才会终止switch语句
//  4.switch语句只支持整数类型的等值判断
//      不支持其它类型的等值判断
//  5.case关键字后面的常量匹配值不能是表达式
//      只能是整型常量或者本质为整型常量的字符型数据
int main02(void)
{
    int num = 1;
    scanf("%d", &num);

    char fl = 'A';
    enum week { X, Y, Z };
    enum week week1 = X;

    int data = 2;
    switch (num)
    {//要处理的变量 error C2050:switch 表达式不是整型
    //case 10://不可以出现相同的case后置常量
    case 10:
        printf("一个士兵! \n");
        break;
    case 1:
        printf("一个班12个人! \n");
        break;
    case 2:
        printf("一个排36个人! \n");
    case 3:
        printf("一个连108个人! \n");
        break;
    case 4:
        printf("一个营324个人! \n");
        break;
    case 5:
        printf("一个团972个人! \n");
        break;
    default:
        printf("我只能处理到团级编制! \n");
        break;
    }

    system("pause");
    return 1;
}