美文网首页
03 C选择结构

03 C选择结构

作者: 亨锅锅 | 来源:发表于2018-10-30 13:04 被阅读0次

    1、if结构

    #include <stdio.h>
    
    int main()
    {
        /*
         * if选择结构格式
         * 第一种格式:
         * if(条件表达式){
         *      条件成立执行的语句
         * }
         * 其它语句
         *
         * 第二种格式:
         * if(条件表达式){
         *      条件成立执行的语句
         * }else{
         *      条件不成立执行的语句
         * }
         * 执行流程:
         * 1.判断添加是否成立
         * 2.如果条件成立, 执行if后面{}中的内容, else后面{}中的内容不会被执行
         * 3.如果条件不成立, 执行else后面{}中的内容, if后面{}中的内容不会被执行
         * 两个{}只有一个会被执行
         *
         * 第三种格式:
         * if(条件表达式1){
         *      条件满足执行的语句
         * }else if(条件表达式2){
         *      条件满足执行的语句
         * }else if(条件表达式3){
         *      条件满足执行的语句
         * }else{
         *      条件不成立执行的语句
         * }
         * 执行流程:
         * 1.先判断if后面的条件表达式是否成立, 如果成立执行if后面{}中的内容, 其它{}中的内容不会被执行
         * 2.如果if后面的条件表达式不成立, 会继续判断else if后面的条件表达式是否成立, 如果成立就执行else if后面{}中的内容
         * 3.如果else if后面的条件表达式不成立, 会依次判断其它else if的条件表达式是否成立, 如果哪个成立就执行哪个后面{}中的内容
         * 4.如果前面所有的条件表达式都不成立, 那么就会执行else后面{}中的内容
         * 从上至下依次判断条件表达式, 哪个条件表达式成立, 就执行哪个条件表达式后面{}中的内容
         * 如果所有条件表达式都不成立, 就执行else后面大括号中的内容
         * 众多大括号只有一个会被执行
         */
    //    int age = 17;
    //    if(age >= 18){
    //        printf("开网卡\n");
    //    }
    //    printf("买饮料\n");
    
        /*
        int age = 19;
    
        if(age >= 18){
            printf("开网卡\n");
        }else{
            printf("回家叫家长来\n");
        }
    
        printf("买饮料\n");
        */
    
        int age = 4;
        if(age >= 18){
            printf("上大学\n");
        }else if(age >= 12){
            printf("上中学\n");
        }else if(age >= 6){
            printf("上小学\n");
        }else if(age >= 3){
            printf("上幼儿园\n");
        }else{
            printf("undefined\n");
        }
        return 0;
    }
    
    
    #include <stdio.h>
    
    int main()
    {
        // 1.if不用写分号
        // 分号也是一条语句, 分号是一条空语句
    //    int age = 17;
    //    if(age >= 18);{
    //        printf("开网卡\n");
    //    }
    
        // 2.if可以省略大括号
        // 如果if省略大括号, 那么只有紧随其后的那条语句受到控制
    //    int age = 17;
    //    if(age >= 18)
    //        printf("开网卡\n");
    //        printf("买饮料\n");
    
        // 3.{}可以单独出现, {}出现的时候代表是一个代码块
    //    {
    //        int age = 88;
    ////        printf("age = %i\n", age);
    //    }
    //    printf("age = %i\n", age);
    
        // 4.如果if省略了大括号, 那么不能再后面直接定义变量
        // 我们称之为作用域混乱
        // 从表面上, num的作用域是从定义的那一行开始, 直到遇到}结束或者return为止
        // 但是从实际上而言, num只有if的条件满足才会执行, 所以两者冲突
    //    int age = 18;
    //    if(age >= 18)
    //        int num = 666;
    //        printf("开网卡\n");
    
        // 5.除了if以外elseif还有else也可以省略大括号
        // 省略大括号之后的特点和if省略之后一样
        // 只有紧随其后的语句受到控制
        // 也不可以直接定义变量
    //    int age = 41;
    //    if(age >= 40)
    //        printf("40\n");
    //    else if(age >= 30)
    //        printf("30\n");
    //    else
    //        printf("other\n");
    //        printf("40 2222\n");
    
        // 6.任何数值都有真假性
    //    if(0){
    //        printf("abc");
    //    }
    
        /*
        int age = 3;
    //    if(age = 18){
    //        printf("被执行了\n");
    //    }
        if(18 == age){ // 在企业开发中如果要判断是否相等, 建议把常量写在前面, 把变量写在后面
            printf("被执行了\n");
        }
        */
        /*
        double num = 3.14;
        // 在企业开发中一定不要使用==来判断两个小数是否相等
        // 因为小数可能出现精度问题
        // 如果在企业开发中要判断两个小数是否相等, 那么建议使用 >= <=
        if(3.14 == num){
            printf("是3.14\n");
        }
        */
    
        // 6.如果if else省略大括号的时, else会自动匹配距离自己最近的那个if
        // 但是有一个前提条件, 就是这个if没有被其它的else匹配
        // 注意点: 编译器会把if else看做是一个整体
    //    if(0)
    //    if(1)
    //    printf("A\n");
    //    else // 和if(1)匹配
    //    printf("B\n");
    //    else // 和if(0)匹配, 因为if(1)已经被匹配过了
    //    if (1)
    //    printf("C\n");
    //    else // 和if(1)匹配
    //    printf("D\n");
    
    
    //    if(0)
    //        if(1)
    //        printf("A\n");
    //        else if(1) // 和if(1)匹配
    //        printf("B\n");
    //        else
    //        printf("c\n");
    //    else // 和if(0)匹配, 因为if(1)已经被匹配过了
    //        if (1)
    //        printf("D\n");
    //        else if(1) // 和if(1)匹配
    //        printf("F\n");
    //        else
    //        printf("G\n");
    
        // 7.if可以嵌套if
    //    if(1){
    //        if(0){
    //            printf("A\n");
    //        }else{
    //            printf("B\n");
    //        }
    //    }else{
    //        if(1){
    //            printf("C\n");
    //        }else{
    //            printf("D\n");
    //        }
    //    }
    
        // 判断一个数是否是100~200之间的数
        int num = 301;
        if(num >= 100){
            if(num <= 200){
                printf("是100~200之间的数\n");
            }else{
                printf("是一个大于等于100的数, 但是不是100~200之间的数\n");
            }
        }
        return 0;
    }
    

    1.1、if小练习

    #include <stdio.h>
    
    int main()
    {
        // 1.让用户输入三个整数, 找出最大值然后输出, 用if实现
        // 1.定义变量保存用户输入的数据
        int a, b, c;
        a = -1, b = -1, c = -1;
        // 2.提醒用户如何输入数据
        printf("请输入三个整数, 用逗号隔开, 以回车结束\n");
        // 3.接收用户输入的数据
        scanf("%i,%i,%i", &a, &b, &c); // 18,10, 22
        /*
        // 4.先比较两个数, 取出最大值
        int max = -1;
        if(a > b){ // 18 > 10
            max = a; // max = 18
        }else{
            max = b;
        }
        // 5.用刚才比较的最大值和剩余的数进行比较
        if(max > c){ // 18 > 22
            max = max;
        }else{
            max = c; // max = 22
        }
        */
    
        /*
        int max = -1;
        if(a > b){ // 18 > 10
            if(a > c){ // 18 > 22
                max = a;
            }else{
                max = c; // max = 22
            }
        }else{
            if(b > c){
                max = b;
            }else{
                max = c;
            }
        }
        */
    
        int max = -1;
        if(a > b && a > c){
            max = a;
        }else if(b > a && b > c){
            max = b;
        }else if(c > a && c > b){
            max = c;
        }
        // 6.输出结果
        printf("max = %i\n",max);
    
        // 2.让用户输入1~7的数, 然后根据用户输入输出是星期几
        return 0;
    }
    

    #include <stdio.h>
    
    int main()
    {
        // 2.让用户输入1~7的数, 然后根据用户输入输出是星期几
    
        // 1.定义变量保存用户输入的数据
        int day = -1;
        // 2.提示用户如何输入数据
        printf("请输入一个1~7的数字, 以回车结束\n");
        // 3.接收用户输入的数据
        scanf("%i", &day);
        // 4.判断非法输出
        /*
        if(day < 1 || day > 7){ // day = 8
            printf("回到火星\n"); // 打印
        }else{
            // 5.根据输入数据输出结果
            // U(YOU)SB
            if(1 == day){ // 1
                printf("星期一\n");
            }else if(2 == day){
                printf("星期二\n");
            }else if(3 == day){
                printf("星期三\n");
            }else if(4 == day){
                printf("星期四\n");
            }else if(5 == day){
                printf("星期五\n");
            }else if(6 == day){
                printf("星期六\n");
            }else{
                printf("星期日\n");
            }
        }
        */
    
        if(day < 1 || day > 7){ // day = 8
            printf("回到火星\n"); // 打印
        }else if(1 == day){ // 1
            printf("星期一\n");
        }else if(2 == day){
            printf("星期二\n");
        }else if(3 == day){
            printf("星期三\n");
        }else if(4 == day){
            printf("星期四\n");
        }else if(5 == day){
            printf("星期五\n");
        }else if(6 == day){
            printf("星期六\n");
        }else{
            printf("星期日\n");
        }
        return 0;
    }
    

    #include <stdio.h>
    
    int main()
    {
        // 需求: 要求用户输入一个1~12的数, 判断是什么季节之后输出
        // 3~5春季 6~8夏季 9~11秋季 12~2冬季
        // 1.定义变量保存用户输入的数据
        int month = -1;
        // 2.提示用户如何输入数据
        printf("请输入一个1~12整数, 以回车结束\n");
        // 3.接收用户输入的数据
        scanf("%i", &month);
        // 4.排除非法数据
        // 5.判断输出结果
        /*
        if(month < 1 || month > 12){
            printf("回到火星\n");
        }else if(3 == month || 4 == month || 5 == month){
            printf("春季\n");
        }else if(6 == month || 7 == month || 8 == month){
            printf("夏季\n");
        }else if(9 == month || 10 == month || 11 == month){
            printf("秋季\n");
        }else if(12 == month || 1 == month || 2 == month){
            printf("冬季\n");
        }
        */
    
    
        if(month < 1 || month > 12){
            printf("回到火星\n");
        }else if(month >= 3 && month <= 5){
            printf("春季\n");
        }else if(month >=6 && month <= 8){
            printf("夏季\n");
        }else if(month >= 9 && month <= 11){
            printf("秋季\n");
        }else{
            printf("冬季\n");
        }
        return 0;
    }
    

    #include <stdio.h>
    
    int main()
    {
        /*
         * 需求:
         * 要求用户输入三个整数, 排序之后输出
         * 例如: 用户输入的是 18,2,16  --> 2,16,18
         */
        // 1.定义变量保存用户输入的数据
        int a, b, c;
        a = -1, b = -1, c = -1;
        // 2.提示用户如何输入数据
        printf("请输入三个整数, 用逗号隔开, 以回车结束\n");
        // 3.接收用户输入的数据
        scanf("%i,%i,%i", &a, &b, &c);
        // 4.排序(相邻的两个变量进行比较, 交换位置即可)
        //特点: 经过一轮两两比较之后, 最值会出现在最后
        //由于最值已经出现在最后了, 所以下一轮就不用比较最后一个值了
        //只有经过所有比较之后, 第一个变量没有可比较的变量, 才算排序完成
        if(a > b){
            int temp = a;
            a = b;
            b = temp;
        }
        if(b > c){ // 得到最值C
            int temp = b;
            b = c;
            c = temp;
        }
        if(a > b){ // 得到最值B
            int temp = a;
            a = b;
            b = temp;
        }
        printf("%i,%i,%i\n", a, b, c);
        return 0;
    }
    

    #include <stdio.h>
    
    int main()
    {
        /*
         * 需求:
         * 要求用户输入三个整数, 排序之后输出
         * 例如: 用户输入的是 18,2,16  --> 2,16,18
         */
        // 1.定义变量保存用户输入的数据
        int a, b, c;
        a = -1, b = -1, c = -1;
        // 2.提示用户如何输入数据
        printf("请输入三个整数, 用逗号隔开, 以回车结束\n");
        // 3.接收用户输入的数据
        scanf("%i,%i,%i", &a, &b, &c);
        // 4.排序
        if(a > b && b > c){
            printf("%i,%i,%i", a, b, c);
        }else if(a > c && c > b)
        {
            printf("%i,%i,%i", a, c, b);
        }else if(b > a && a > b)
        {
            printf("%i,%i,%i", b, a, c);
        }else if(b > c && c > a)
        {
            printf("%i,%i,%i", b, c, a);
        }else if(c > a && a > b)
        {
            printf("%i,%i,%i", c, a, b);
        }else if(c > b && b > a)
        {
            printf("%i,%i,%i", c, b, a);
        }
        return 0;
    }
    

    1.2、升级版

    #include <stdio.h>
    
    int main()
    {
        /*
         * 需求:
         * 要求用户输入四个整数, 排除之后输出
         * 例如: 用户输入的是 18,2,16  --> 2,16,18
         */
        // 接收
        // scanf("%i,%i,%i,%i", &a, &b, &c, &d);
        // 输出
        // printf("%i,%i,%i,%i\n", a, b, c, d);
        return 0;
    }
    
    #include <stdio.h>
    
    int main()
    {
        /*
         * 需求:
         * 要求用户输入四个整数, 排序之后输出
         * 例如: 用户输入的是 18,2,16  --> 2,16,18
         */
        // 1.定义是个变量, 保存用户输入的数据
        int a, b, c, d;
        a = -1, b = -1, c = -1, d = -1;
        // 2.提示用户如何输入数据
        printf("请输入四个整数, 用逗号隔开, 以回车结束\n");
        // 3.接收用户输入的数据
        scanf("%i,%i,%i,%i", &a, &b, &c, &d);
        // 4.进行第一轮排序
        if(a > b){
            int temp = a;
            a = b;
            b = temp;
        }
        if(b > c){
            int temp = b;
            b = c;
            c = temp;
        }
        if(c > d){
            int temp = c;
            c = d;
            d = temp;
        }
        // 5.进行第二轮排序
        if(a > b){
            int temp = a;
            a = b;
            b = temp;
        }
        if(b > c){
            int temp = b;
            b = c;
            c = temp;
        }
        // 6.进行第三轮的排序
        if(a > b){
            int temp = a;
            a = b;
            b = temp;
        }
        // 7.输出结果
        printf("%i,%i,%i,%i\n", a, b, c, d);
        return 0;
    }
    

    #include <stdio.h>
    
    int main()
    {
        /*
         * 需求:
         * 要求用户输入四个整数, 排序之后输出
         * 例如: 用户输入的是 18,2,16  --> 2,16,18
         */
        // 1.定义是个变量, 保存用户输入的数据
        int a, b, c, d;
        a = -1, b = -1, c = -1, d = -1;
        // 2.提示用户如何输入数据
        printf("请输入四个整数, 用逗号隔开, 以回车结束\n");
        // 3.接收用户输入的数据
        scanf("%i,%i,%i,%i", &a, &b, &c, &d);
        // 4.第一轮比较
        if(a > b){
            int temp = a;
            a = b;
            b = temp;
        }
        if(a > c){
            int temp = a;
            a = c;
            c = temp;
        }
        if(a > d){
            int temp = a;
            a = d;
            d = temp;
        }
        // 5.第二轮比较
        if(b > c){
            int temp = b;
            b = c;
            c = temp;
        }
        if(b > d){
            int temp = b;
            b = d;
            d = temp;
        }
        // 6.第三轮比较
        if(c > d){
            int temp = c;
            c = d;
            d = temp;
        }
        // 7.输出排序后的结果
        printf("%i,%i,%i,%i\n", a, b, c, d);
        return 0;
    }
    

    1.3 升升级版

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main()
    {
        /*
         1.有两个角色 电脑 / 我
         2.两个角色都可以出拳, 并且都只能出 石头/剪刀/布
         3.如何判断是否是石头/ 剪刀/ 布? 0代表石头/ 1代表剪刀 / 2代表布
         4.电脑的出拳必须随机生成, 用户可以通过键盘录入
         */
        // 1.让电脑出拳
        // 注意点: C语言中的rand函数返回的是一个伪随机数
        // 以下语句在C语言中一般都是一起出现的
        srand(time(NULL)); // 种一个种子
        // 0 % 3 = 0, 1 % 3 = 1, 2 % 3 = 2
        // 9 % 3 = 0, 10 % 3 = 1, 11 % 3 = 2
        int cm = rand() % 3;
    //    printf("res = %i\n", res);
    
        // 2.定义变量保存用户输入的数据
        int user = -1;
        // 3.提示用户如何输入
        printf("0代表石头/ 1代表剪刀 / 2代表布\n");
        printf("请输入一个0~2的值, 以回车结束\n");
        // 3.接收用户输入的数据
        scanf("%i", &user);
        // 4.判断结果
        /*
         * 电脑        用户(输了)     用户(赢了)
         * 0代表石头    1代表剪刀     2代表布
         * 1代表剪刀    2代表布       0代表石头
         * 2代表布      0代表石头     1代表剪刀
         *
         * 输了:  0-1 = -1
         *       1-2 = -1
         *       2-0 = 2
         * 赢了:  0-2 = -2
         *       1-0 = 1
         *       2-1 = 1
         */
        // 排除非法数据
        /*
        if(user < 0 || user > 2){
            printf("还能不能好好的玩耍\n");
        }else if(cm == 0 && user == 1){
            printf("电脑出的是%i, 用户处的是%i, 电脑赢了\n", cm, user);
        }else if(cm == 1 && user == 2){
            printf("电脑出的是%i, 用户处的是%i, 电脑赢了\n", cm, user);
        }else if(cm == 2 && user == 0){
            printf("电脑出的是%i, 用户处的是%i, 电脑赢了\n", cm, user);
        }else if(cm == 0 && user == 2){
            printf("电脑出的是%i, 用户处的是%i, 用户赢了\n", cm, user);
        }else if(cm == 1 && user == 0){
            printf("电脑出的是%i, 用户处的是%i, 用户赢了\n", cm, user);
        }else if(cm == 2 && user == 1){
            printf("电脑出的是%i, 用户处的是%i, 用户赢了\n", cm, user);
        }else{
            printf("电脑出的是%i, 用户处的是%i, 打平手\n", cm, user);
        }
        */
    
        if(user < 0 || user > 2){
            printf("还能不能好好的玩耍\n");
        }else{
            int res = cm - user;
            if(-1 == res || 2 == res){
                printf("电脑出的是%i, 用户处的是%i, 电脑赢了\n", cm, user);
            }else if(-2 == res || 1 == res){
                printf("电脑出的是%i, 用户处的是%i, 用户赢了\n", cm, user);
            }else{
                printf("电脑出的是%i, 用户处的是%i, 打平手\n", cm, user);
            }
        }
        return 0;
    }
    

    2、switch结构

    #include <stdio.h>
    
    int main()
    {
        /*
         * C语言中的第二种选择结构
         * switch选择结构的格式:
         *
         *
         * switch(表达式){
         * case 表达式1: // 相当于else if
         *  被表达式1控制的语句;
         *  break;
         * case 表达式2: // 相当于else if
         *  被表达式2控制的语句;
         *  break;
         * default: // 相当于else
         *  被default控制的语句;
         *  break;
         * }
         *
         * 执行流程:
         * 1.计算switch后面()中表达式的结果
         * 2.利用计算的结果从上至下的和switch后面{}中的case的表达式的值一次比较
         * 3.一旦发现switch表达式的值和case表达式的值相同, 就执行该case后面的语句
         * 4.一旦某个case被执行了, 其它的case就不会执行了
         * 5.如果所有case表达式的值和switch表达式的值都不相等, 那么就执行default后面的语句
         */
    
        int day = 3;
        switch(day){
        case 1:
            printf("星期一\n");
            break;
        case 2:
            printf("星期二\n");
            break;
        default:
            printf("Other\n");
            break;
        }
        return 0;
    }
    

    #include <stdio.h>
    
    int main()
    {
        // 需求: 判断用户输入的数字是否是100~200之间的数
        int num = -1;
        scanf("%i", &num);
        // 在企业开发中, 能用if就用if
        // if更适合对区间的判断, 或者对多条件的判断
        // switch更适合对固定的几个数据进行判断
        // switch理论上的性能比if要高
    //    if(num >= 100 && num <= 200){
    //        printf("是100~200之间的数\n");
    //    }else{
    //        printf("不是100~200之间的数\n");
    //    }
    
        switch(num){
        case 100:
        case 101:
            printf("是100~200之间的数\n");
            ....
        default:
            printf("不是100~200之间的数\n");
        }
        return 0;
    }
    

    #include <stdio.h>
    
    int main()
    {
        /*
         * 需求:
         * 要求用户输入一个0~100的分数, 根据输入的分数输出对应的等级
         * A : 90~100   99/10 = 9 100/10 = 10
         * B : 80~89    87/10 = 8
         * C : 70~79
         * D : 60~69
         * E : 60分以下
         */
        // 1.定义变量保存用户输入的数据
        int score = -1;
        // 2.提醒老师如何录入分数
        printf("请输入一个0~100的分数, 以回车结束\n");
        // 3.接收用户输入的数据
        scanf("%i", &score);
        // 4.根据用户输入判断对应的等级
        // 4.1排除非法数据
    //    if(score < 0 || score > 100){
    //        printf("你是校长的儿子吧\n");
    //    }else if(score >= 90 && score <= 100){
    //        printf("A\n");
    //    }else if(score >= 80 && score <= 89){
    //        printf("B\n");
    //    }else if(score >= 70 && score <= 79){
    //        printf("C\n");
    //    }else if(score >= 60 && score <= 69){
    //        printf("D\n");
    //    }else{
    //        printf("E\n");
    //    }
    
        switch(score/10){
        case 10:
    //        printf("A\n");
    //        break;
        case 9:
            printf("A\n");
            break;
        case 8:
            printf("B\n");
            break;
        case 7:
            printf("C\n");
            break;
        case 6:
            printf("D\n");
            break;
        case 5:
    //        printf("E\n");
    //        break;
        case 4:
    //        printf("E\n");
    //        break;
        case 3:
    //        printf("E\n");
    //        break;
        case 2:
    //        printf("E\n");
    //        break;
        case 1:
    //        printf("E\n");
    //        break;
        case 0:
            printf("E\n");
            break;
        default:
            printf("你是校长的儿子吧\n");
        }
        return 0;
    }
    

    2.1、 穿透问题

    #include <stdio.h>
    
    int main()
    {
        // 1.case的穿透问题
        // 在switch中, 只要有一个case被匹配了, 其它的case和default都会失效
        // break在switch中的作用, 就是跳出switch语句(结束当前的switch语句)
        // 如果default是写在最后, 那么default后面的break可以省略
    //    int day = 1;
    //    switch(day){
    //    case 1:
    //        printf("星期一\n");
    //        break;
    //    case 2:
    //        printf("星期二\n");
    ////        break;
    //    default:
    //        printf("OTHER\n");
    ////        break; // 这里的break是可以省略的
    //    }
    
        // 2.default书写的位置, 可以随便写
        // 无论default是否是写在switch语句的最后, 都会最后执行
        // 如果default不是写在最后的, 那么break不能省略, 省略就会发生穿透问题
        // 记住一点: 永远把default写在最后
    //    int day = 3;
    //    switch(day){
    //    case 1:
    //        printf("星期一\n");
    //        break;
    //    default:
    //        printf("OTHER\n");
    ////        break;
    //    case 2:
    //        printf("星期二\n");
    //        break;
    //    }
    
        // 3.switch后面的()中只能表达式/变量/常量, 并且必须是整型或者能够被提升为整型的
    //    int num = 1;
    //    switch(num){ // 放一个变量
    //    switch(2){ // 放一个常量
    //    switch(1 + 1){ // 放一个表达式
    //    switch(1.1){ // 会报错, 小数不能提升为整型
        // 不会报错, char类型可以提升为int类型
        // char类型底层的本质存储的是ASCII码, 而ASCII码就是整型
    //    switch('a'){
    //    case 1:
    //        printf("A\n");
    //        break;
    //    case 2:
    //        printf("B\n");
    //        break;
    //    default:
    //        printf("Other\n");
    //    }
    
        // 4.switch的case后面只能放常量和表达式, 并且必须是整型或者能够被提升为整型的
    //    int num = 1;
    //    switch(2){
    //    case 1: //常量
    ////    case num: // 变量, 会报错
    //        printf("A\n");
    //        break;
    //    case 1 + 1: // 表达式
    //        printf("B\n");
    //        break;
    //    default:
    //        printf("Other\n");
    //    }
    
        // 5.switch的case后面的值不能重复
    //    int num = 1;
    //    switch(2){
    //    case 2:
    //        printf("A\n");
    //        break;
    ////    case 1: // 会报错
    //    case 1 + 1: // 会报错
    //        printf("B\n");
    //        break;
    //    default:
    //        printf("Other\n");
    //    }
    
        // 6.switch的case后面不能定义变量
        // 如果要在case后面定义变量, 必须在case后面加上{}
        switch(1){
        case 1:{
            int num = 666; // 会报错
            printf("A\n");
            break;
        }
        case 2:
            printf("B\n");
            break;
        default:
            printf("Other\n");
        }
        return 0;
    }
    
    

    #include <stdio.h>
    
    int main()
    {
        /*
         * 要求利用switch实现两个数的简单的计算器
         * + - * / %
         */
    
        // 1.定义变量保存用户输入的两个整数
        int a, b;
        // 2.定义变量保存用户输入的操作符号
        char ch;
        // 3.提示用户如何输入
        printf("请按照如下格式输入两个整数和需要进行的计算符号\n");
        printf("示例: 1 + 1 or 1 - 1\n");
        // 4.接收用户输入的内容
        scanf("%i %c %i", &a, &ch, &b);
        // 5.判断当前用户要做什么操作
        switch(ch){
        case '+':
            printf("%i %c %i = %i", a, ch, b, a + b);
            break;
        case '-':
            printf("%i %c %i = %i", a, ch, b, a - b);
            break;
        case '*':
            printf("%i %c %i = %i", a, ch, b, a * b);
            break;
        case '/':
            printf("%i %c %i = %i", a, ch, b, a / b);
            break;
        case '%':
            printf("%i %c %i = %i", a, ch, b, a % b);
            break;
        default:
            printf("更多功能请使用付费版本\n");
        }
        // 5.进行对应的操作, 输出结果
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:03 C选择结构

          本文链接:https://www.haomeiwen.com/subject/mwngnftx.html