20.switch

20.条件分支语句-switch


20.1 知识点

作用

switch语句是一种用于处理多个可能情况的条件语句。它使得在顺序执行的代码中产生分支,根据某个变量的值执行相应的代码块。switch语句通常用于替代多个if...else if...else语句,使代码更清晰、易读。

基本语法

//switch(变量)
//{
//    // 变量 == 常量 执行 case和 break之间的代码
//    case 常量:
//        满足条件执行的代码逻辑;
//        break;
//    case 常量:
//        满足条件执行的代码逻辑;
//        break;
//    case 可以有无数个
//    default:
//        如果上面case的条件都不满足 就会执行 default 中的代码
//        break;
//}
//注意: 常量!! 只能写一个值 不能去写一个范围 不能写条件运算符啊 逻辑运算符啊
//switch 只判断变量是否等于某一个固定值!!!!

代码示例

示例一

int a = 3;
switch (a)
{
    //这个条件一定是常量
    case 1:
        Console.WriteLine("a等于1");
        break;
    case 2:
        Console.WriteLine("a等于2");
        break;
    case 3:
        Console.WriteLine("a等于3");
        break;
    default:
        Console.WriteLine("什么条件都不满足,执行default中的内容");
        break;
}

示例二

float f = 1.4f;
//它一般是配合枚举使用
switch (f)
{
    case 1.5f:
        Console.WriteLine("f等于1.5");
        break;
    case 1:
        Console.WriteLine("f等于1.5");
        break;
    default:
        Console.WriteLine("f什么条件都不满足,执行default中的内容");
        break;
}

default可省略

string str = "123";
switch (str)
{
    case "123":
        Console.WriteLine("等于123");
        break;
    case "234":
        Console.WriteLine("等于234");
        break;
}

自定义常量

char c = 'A';
//1.必须初始化  2.不能修改
const char c2 = 'A';
switch (c)
{
    case c2:
        Console.WriteLine("c等于A");
        break;
    default:
        break;
}

贯穿

//作用:满足某些条件时 做的事情是一样的 就可以使用贯穿
int aa = 1;
switch (aa)
{
    // 不写case后面配对的break 就叫做贯穿
    // 满足 1 3 4 2其中一个条件 就会执行 之后的代码
    // 假如当前case写了语句但是没写break会报错
    case 1:
    case 3:
    case 4:
    case 2:
        // case和break之间可以写n句语句
        // 并且可以嵌套使用  
        Console.WriteLine("是个数字");
        Console.WriteLine("是个数字");
        Console.WriteLine("是个数字");
        Console.WriteLine("是个数字");
        Console.WriteLine("是个数字");
        Console.WriteLine("是个数字");
        Console.WriteLine("是个数字");
        if( aa == 1 )
        {
            switch(aa)
            {
                default:
                    break;
            }
        }
        else
        {
            //...
        }
        break;
    default:
        break;
}

20.2 知识点代码

using System;

namespace Lesson17_条件分支语句_switch
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("switch语句");

            #region 知识点一 作用 
            //让顺序执行的代码 产生分支
            #endregion

            #region 知识点二 基本语法
            //switch(变量)
            //{
            //    // 变量 == 常量 执行 case和 break之间的代码
            //    case 常量:
            //        满足条件执行的代码逻辑;
            //        break;
            //    case 常量:
            //        满足条件执行的代码逻辑;
            //        break;
            //    case 可以有无数个
            //    default:
            //        如果上面case的条件都不满足 就会执行 default中的代码
            //        break;
            //}
            // 注意: 常量!! 只能写一个值 不能去写一个范围 不能写条件运算符啊 逻辑运算符啊
            // switch 只判断变量是否等于某一个固定值!!!!

            int a = 3;
            int a2 = 3;
            switch (a)
            {
                //这个条件一定是常量
                case 1:
                    Console.WriteLine("a等于1");
                    break;
                case 2:
                    Console.WriteLine("a等于2");
                    break;
                case 3:
                    Console.WriteLine("a等于3");
                    break;
                default:
                    Console.WriteLine("什么条件都不满足,执行default中的内容");
                    break;
            }

            float f = 1.4f;
            //它一般是配合枚举使用
            switch (f)
            {
                case 1.5f:
                    Console.WriteLine("f等于1.5");
                    break;
                case 1:
                    Console.WriteLine("f等于1.5");
                    break;
                default:
                    Console.WriteLine("f什么条件都不满足,执行default中的内容");
                    break;
            }

            #endregion

            #region 知识点三 default可省略
            string str = "123";
            switch (str)
            {
                case "123":
                    Console.WriteLine("等于123");
                    break;
                case "234":
                    Console.WriteLine("等于234");
                    break;
            }
            #endregion

            #region 知识点四 可自定义常量
            char c = 'A';
            //1.必须初始化  2.不能修改
            const char c2 = 'A';
            switch (c)
            {
                case c2:
                    Console.WriteLine("c等于A");
                    break;
                default:
                    break;
            }
            #endregion

            #region 知识点五 贯穿
            //作用:满足某些条件时 做的事情是一样的 就可以使用贯穿
            int aa = 1;
            switch (aa)
            {
                // 不写case后面配对的break 就叫做贯穿
                // 满足 1 3 4 2其中一个条件 就会执行 之后的代码
                // 假如当前case写了语句但是没写break会报错
                case 1:
                case 3:
                case 4:
                case 2:
                    // case和break之间可以写n句语句
                    // 并且可以嵌套使用 
                    Console.WriteLine("是个数字");
                    Console.WriteLine("是个数字");
                    Console.WriteLine("是个数字");
                    Console.WriteLine("是个数字");
                    Console.WriteLine("是个数字");
                    Console.WriteLine("是个数字");
                    Console.WriteLine("是个数字");
                    if( aa == 1 )
                    {
                        switch(aa)
                        {
                            default:
                                break;
                        }
                    }
                    else
                    {

                    }
                    break;
                default:
                    break;
            }
            #endregion
        }
    }
}

20.3 练习题

计算韬老师的工资

int money = 4000;

Console.WriteLine("请输入对韬老狮的评级");
string str = Console.ReadLine();

switch (str)
{
    case "A":
        money += 500;
        break;
    case "B":
        break;
    case "C":
        money -= 300;
        break;
    case "D":
        money -= 500;
        break;
    case "E":
        money -= 800;
        break;
    default:
        Console.WriteLine("请输入正确的等级");
        break;
}

Console.WriteLine("你对韬老狮的评级为{0},他的最终薪资是{1}", str, money);

买不同型号的咖啡

int money1 = 10;

Console.WriteLine("请输入你要买的型号(1是中杯,2是大杯,3是超大杯)");
string str1 = Console.ReadLine();

switch (str1)
{
    case "1":
        money1 -= 5;
        Console.WriteLine("购买成功,还剩{0}元", money1);
        break;
    case "2":
        money1 -= 7;
        Console.WriteLine("购买成功,还剩{0}元", money1);
        break;
    case "3":
        Console.WriteLine("钱不够,请换其他型号");
        break;
    default:
        Console.WriteLine("请输入正确内容");
        break;
}

输出学生的成绩等级

try
{
    Console.WriteLine("请输入学生成绩");
    int cj = int.Parse(Console.ReadLine());
    cj /= 10;

    switch (cj)
    {
        case 10:
        case 9:
            Console.WriteLine("你的成绩是A");
            break;
        case 8:
            Console.WriteLine("你的成绩是B");
            break;
        case 7:
            Console.WriteLine("你的成绩是C");
            break;
        case 6:
            Console.WriteLine("你的成绩是D");
            break;
        default:
            Console.WriteLine("你的成绩是E");
            break;
    }
}
catch
{
    Console.WriteLine("请输入数字");
}

在控制台输入一个(0~9)的数并显示为大写

try
{
    Console.WriteLine("请输入0~9之间的数字");
    int num = int.Parse(Console.ReadKey().KeyChar.ToString());

    switch (num)
    {
        case 0:
            Console.WriteLine("零");
            break;
        case 1:
            Console.WriteLine("一");
            break;
        case 2:
            Console.WriteLine("二");
            break;
        case 3:
            Console.WriteLine("三");
            break;
        case 4:
            Console.WriteLine("四");
            break;
        case 5:
            Console.WriteLine("五");
            break;
        case 6:
            Console.WriteLine("六");
            break;
        case 7:
            Console.WriteLine("七");
            break;
        case 8:
            Console.WriteLine("八");
            break;
        case 9:
            Console.WriteLine("九");
            break;
    }
}
catch
{
    Console.WriteLine("请输入正确内容");
}

20.4 练习题代码

using System;

namespace Lesson17_练习题
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("switch练习题");
            #region 练习题一
            //韬老狮的工资是由基本工资 + 绩效决定的
            //绩效说明:
            //学生评价 很兴奋,则评定为A级,绩效工资500
            //学生评价 很充实,则评定为B级,不加绩效工资
            //学生评价 还好吧,则评定为C级,绩效工资扣300
            //学生评价 难理解,则评定为D级,绩效工资扣500
            //学生评价 枯燥泛味,则评定为E级,绩效工资扣800
            //假设韬老狮的工资是4000
            //请用户输入韬老师的评级,并算出韬老师的工资是多少?

            int money = 4000;
            Console.WriteLine("请输入对韬老狮的评级");
            string str = Console.ReadLine();
            switch (str)
            {
                case "A":
                    //money = money + 500;
                    money += 500;
                    break;
                case "B":
                    break;
                case "C":
                    //money = money - 300;
                    money -= 300;
                    break;
                case "D":
                    money -= 500;
                    break;
                case "E":
                    money -= 800;
                    break;
                default:
                    Console.WriteLine("请输入 正确的等级");
                    break;
            }

            Console.WriteLine("你对韬老狮的评级为{0},他的最终薪资是{1}", str, money);

            #endregion

            #region 练习题二
            //小韬带了10元钱去星巴克买咖啡,三种型号选择:
            //1 = (中杯,¥5)
            //2 = (大杯,¥7)
            //3 = (超大杯,¥11)
            //请用户输入选择的型号,如果钱够,则购买成功,并算出小王最后还剩多少钱?
            //如果钱不够,则提示用户“钱不够,请换其他型号”

            int money1 = 10;
            Console.WriteLine("请输入你要买的型号(1是中杯,2是大杯,3是超大杯)");
            string str1 = Console.ReadLine();
            switch (str1)
            {
                case "1":
                    money1 -= 5;
                    Console.WriteLine("购买成功,还剩{0}元", money1);
                    break;
                case "2":
                    money1 -= 7;
                    Console.WriteLine("购买成功,还剩{0}元", money1);
                    break;
                case "3":
                    Console.WriteLine("钱不够,请换其他型号");
                    break;
                default:
                    Console.WriteLine("请输入正确内容");
                    break;
            }

            #endregion

            #region 练习题三
            //输入学生的考试成绩,如果
            //成绩 >= 90:A
            //90 > 成绩 >= 80:B
            //80 > 成绩 >= 70:C
            //70 > 成绩 >= 60:D
            //成绩 < 60:E
            //(使用switch语法完成)
            //最后输出学生的考试等级

            try
            {
                Console.WriteLine("请输入学生成绩");
                int cj = int.Parse(Console.ReadLine());
                // 取它的 十位数
                // 100 / 10 = 10
                // 99 / 10 = 9
                // 84 / 10 = 8
                // 74 / 10 = 7
                // cj = cj / 10;
                cj /= 10;
                switch (cj)
                {
                    case 10:
                    case 9:
                        Console.WriteLine("你的成绩是A");
                        break;
                    case 8:
                        Console.WriteLine("你的成绩是B");
                        break;
                    case 7:
                        Console.WriteLine("你的成绩是C");
                        break;
                    case 6:
                        Console.WriteLine("你的成绩是D");
                        break;
                    default:
                        Console.WriteLine("你的成绩是E");
                        break;
                }
            }
            catch
            {
                Console.WriteLine("请输入数字");
            }

            #endregion

            #region 练习题四
            //在控制台输入一个(0~9)的数并显示为大写。如输入2,则显示二

            try
            {
                Console.WriteLine("请输入0~9之间的数字");
                int num = int.Parse(Console.ReadKey().KeyChar.ToString());
                switch (num)
                {
                    case 0:
                        Console.WriteLine("零");
                        break;
                    case 1:
                        Console.WriteLine("一");
                        break;
                    case 2:
                        Console.WriteLine("二");
                        break;
                    case 3:
                        Console.WriteLine("三");
                        break;
                    case 4:
                        Console.WriteLine("四");
                        break;
                    case 5:
                        Console.WriteLine("五");
                        break;
                    case 6:
                        Console.WriteLine("六");
                        break;
                    case 7:
                        Console.WriteLine("七");
                        break;
                    case 8:
                        Console.WriteLine("八");
                        break;
                    case 9:
                        Console.WriteLine("九");
                        break;
                }
            }
            catch
            {
                Console.WriteLine("请输入正确内容");
            }
            #endregion
        }
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏