switch-case 多分支试题

本页面包含了从简单到复杂的switch-case多分支语句试题,涵盖了基本结构、break语句、default分支、各种数据类型以及嵌套switch等多种形式。建议先学习完switch-case多分支选择后再进行练习。

题目说明

  • 题目按难度从易到难排列
  • 包含选择题和编程题两种类型
  • 点击"显示答案"按钮查看解析
  • 建议独立完成后再查看答案

一、简单难度

简单
1. 以下代码的输出结果是什么?
int day = 3;
switch (day)
{
    case 1:
        Console.WriteLine("星期一");
        break;
    case 2:
        Console.WriteLine("星期二");
        break;
    case 3:
        Console.WriteLine("星期三");
        break;
    default:
        Console.WriteLine("其他");
        break;
}
  • A. 星期一
  • B. 星期二
  • C. 星期三
  • D. 其他
  • 答案:C
    解析:day的值为3,匹配case 3,所以输出"星期三"。
    简单
    2. 以下代码的输出结果是什么?
    int month = 13;
    switch (month)
    {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            Console.WriteLine("31天");
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            Console.WriteLine("30天");
            break;
        case 2:
            Console.WriteLine("28或29天");
            break;
        default:
            Console.WriteLine("无效月份");
            break;
    }
  • A. 31天
  • B. 30天
  • C. 28或29天
  • D. 无效月份
  • 答案:D
    解析:month的值为13,没有匹配的case分支,所以执行default分支,输出"无效月份"。
    简单
    3. 以下关于switch-case语句的描述,错误的是?
  • A. switch后面的表达式可以是整数类型
  • B. switch后面的表达式可以是字符串类型
  • C. case后面的值必须是常量
  • D. 每个case分支都必须有break语句
  • 答案:D
    解析:break语句是可选的,但如果没有break语句,程序会继续执行下一个case分支(贯穿现象)。

    二、中等难度

    中等
    4. 以下代码的输出结果是什么?(注意缺少break语句)
    int num = 2;
    switch (num)
    {
        case 1:
            Console.WriteLine("A");
        case 2:
            Console.WriteLine("B");
        case 3:
            Console.WriteLine("C");
        default:
            Console.WriteLine("D");
    }
  • A. B
  • B. B C
  • C. B C D
  • D. 编译错误
  • 答案:C
    解析:由于缺少break语句,程序会从匹配的case 2开始,依次执行后面所有的case和default分支,输出"B C D"。
    中等
    5. 以下代码的输出结果是什么?
    char grade = 'B';
    string result;
    
    switch (grade)
    {
        case 'A':
            result = "优秀";
            break;
        case 'B':
            result = "良好";
            break;
        case 'C':
            result = "及格";
            break;
        case 'D':
            result = "不及格";
            break;
        default:
            result = "无效等级";
            break;
    }
    
    Console.WriteLine(result);
  • A. 优秀
  • B. 良好
  • C. 及格
  • D. 不及格
  • 答案:B
    解析:grade的值为'B',匹配case 'B',所以result被赋值为"良好",输出"良好"。
    中等
    6. 以下代码的输出结果是什么?
    string season = "Summer";
    switch (season)
    {
        case "Spring":
            Console.WriteLine("春天");
            break;
        case "Summer":
            Console.WriteLine("夏天");
            break;
        case "Autumn":
            Console.WriteLine("秋天");
            break;
        case "Winter":
            Console.WriteLine("冬天");
            break;
        default:
            Console.WriteLine("未知季节");
            break;
    }
  • A. 春天
  • B. 夏天
  • C. 秋天
  • D. 冬天
  • 答案:B
    解析:season的值为"Summer",匹配case "Summer",所以输出"夏天"。

    三、困难难度

    困难
    7. 以下嵌套switch代码的输出结果是什么?
    int x = 1, y = 2;
    switch (x)
    {
        case 1:
            Console.WriteLine("x=1");
            switch (y)
            {
                case 1:
                    Console.WriteLine("y=1");
                    break;
                case 2:
                    Console.WriteLine("y=2");
                    break;
            }
            break;
        case 2:
            Console.WriteLine("x=2");
            break;
    }
  • A. x=1
  • B. x=1 y=1
  • C. x=1 y=2
  • D. x=2
  • 答案:C
    解析:外层switch匹配x=1,输出"x=1",然后进入内层switch匹配y=2,输出"y=2"。
    困难
    8. 以下代码的输出结果是什么?
    int num = 5;
    switch (num)
    {
        case 1:
        case 2:
        case 3:
            Console.WriteLine("1-3");
            break;
        case 4:
        case 5:
        case 6:
            Console.WriteLine("4-6");
            break;
        default:
            Console.WriteLine("其他");
            break;
    }
  • A. 1-3
  • B. 4-6
  • C. 其他
  • D. 无输出
  • 答案:B
    解析:num的值为5,匹配case 5,由于case 4、5、6共用一个代码块,所以输出"4-6"。
    困难
    9. 以下代码的输出结果是什么?
    int value = 3;
    switch (value)
    {
        case 1:
            Console.WriteLine("One");
            break;
        case 2:
            Console.WriteLine("Two");
        case 3:
            Console.WriteLine("Three");
        case 4:
            Console.WriteLine("Four");
            break;
        case 5:
            Console.WriteLine("Five");
            break;
        default:
            Console.WriteLine("Other");
            break;
    }
  • A. Three
  • B. Three Four
  • C. Two Three Four
  • D. One Two Three Four
  • 答案:B
    解析:value的值为3,匹配case 3。由于case 2和case 3缺少break语句,所以从case 3开始执行,输出"Three Four"(遇到case 4的break语句停止)。

    四、编程题

    中等
    10. 编写一个程序,根据用户输入的月份,输出对应的季节(使用switch-case语句)。
    要求:
    - 春季:3-5月
    - 夏季:6-8月
    - 秋季:9-11月
    - 冬季:12-2月
    - 输入无效月份时输出提示信息
    参考代码:
    using System;
    
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("请输入月份(1-12):");
            int month = int.Parse(Console.ReadLine());
            
            string season;
            switch (month)
            {
                case 3:
                case 4:
                case 5:
                    season = "春季";
                    break;
                case 6:
                case 7:
                case 8:
                    season = "夏季";
                    break;
                case 9:
                case 10:
                case 11:
                    season = "秋季";
                    break;
                case 12:
                case 1:
                case 2:
                    season = "冬季";
                    break;
                default:
                    season = "无效月份";
                    break;
            }
            
            Console.WriteLine($"{month}月属于{season}");
        }
    }
    困难
    11. 编写一个程序,根据用户输入的数字(1-10),输出对应的英文单词,若输入10以上的数字,输出"Greater than 10"(使用switch-case语句)。
    要求:
    - 1: One, 2: Two, ..., 10: Ten
    - 输入非数字时要处理异常 - 输入数字范围外时给出提示
    参考代码:
    using System;
    
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                Console.Write("请输入一个数字:");
                int number = int.Parse(Console.ReadLine());
                
                switch (number)
                {
                    case 1:
                        Console.WriteLine("One");
                        break;
                    case 2:
                        Console.WriteLine("Two");
                        break;
                    case 3:
                        Console.WriteLine("Three");
                        break;
                    case 4:
                        Console.WriteLine("Four");
                        break;
                    case 5:
                        Console.WriteLine("Five");
                        break;
                    case 6:
                        Console.WriteLine("Six");
                        break;
                    case 7:
                        Console.WriteLine("Seven");
                        break;
                    case 8:
                        Console.WriteLine("Eight");
                        break;
                    case 9:
                        Console.WriteLine("Nine");
                        break;
                    case 10:
                        Console.WriteLine("Ten");
                        break;
                    default:
                        if (number > 10)
                        {
                            Console.WriteLine("Greater than 10");
                        }
                        else
                        {
                            Console.WriteLine("输入的数字小于1");
                        }
                        break;
                }
            }
            catch (FormatException)
            {
                Console.WriteLine("请输入有效的数字");
            }
        }
    }