2023-02-02
自我提升
0

❓问题 1
有⼀台⾃动售货机,⾥⾯⼀共6个商品。⽤户可以输⼊1-6选择要购买的商品。
1 矿泉⽔ 2红茶 3绿茶 4雪碧 5可⼝可乐 6脉动
根据⽤户输⼊的数字,显⽰⽤户购买的商品。

c#
int number = Convert.ToInt32(Console.ReadLine()); if (number == 1) { Console.WriteLine("矿泉水"); }else if (number == 2) { Console.WriteLine("红茶"); }else if (number == 3) { Console.WriteLine("绿茶"); } else if (number == 4) { Console.WriteLine("雪碧"); } else if (number == 5) { Console.WriteLine("可口可乐"); } else { Console.WriteLine("脉动"); }

当嵌套的 if 比较少时(三个以内),用 if 编写程序会比较简洁。
但是当选择的分支比较多时,嵌套的 if 语句层数就会很多,导致程序冗长,可读性下降。
因此C#语言提供 switch 语句来处理多分支选择。

image.png

switch分支的语法格式

switch(变量)
{
case 条件1:
做...
case 条件2:
做...
case 条件3:
做...
default:
做...
}

1、default可以没有 , default 后面也可以什么都不写,但是后面的冒号和分号千万不能省略,省略了就是语法错误。 2、每⼀个case后⾯⼀般都有break
3、 switch 后面括号内的“表达式”必须是整数类型。也就是说可以是 int 型变量、char 型变量,也可以直接是整数或字符常量,哪怕是负数都可以。但绝对不可以是实数,float 型变量、double 型变量、小数常量通通不行,全部都是语法错误。
4、switch 下的 case 和 default 必须用一对大括号{}括起来。

c#
int number = Convert.ToInt32(Console.ReadLine()); switch (number) { case 1: Console.WriteLine("矿泉水"); 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; default: Console.WriteLine("没有你要购买的商品"); break; }

❓问题 2
输⼊今天是星期⼏,输出今天要上的课程。

日期课程
1PLC
2PLC
3C++
4C++
5C++
6Scratch
7Scratch
c#
int weekNum = Convert.ToInt32(Console.ReadLine()); switch (weekNum) { case 1: case 2: Console.WriteLine("PLC"); break; case 3: case 4: case 5: Console.WriteLine("C++"); break; case 6: case 7: Console.WriteLine("Scratch"); break; }

If和switch的异同


  1. 都是分⽀语句
  2. 不同
    if适合范围判断
    switch适合多条件的是否相等的判断
c#
int x = 1, a = 0, b = 0; switch (x) { case 0: case 1: a++; case 2: a++,b++; } Console.WriteLine("a="+a+" b="+b);