if-else结构
开始之前,先看一段代码:
string user_input = Console.ReadLine();
if(user_input == "1234567")
{
Console.WriteLine("密码正确");
}
else
{
Console.WriteLine("错误");
}
这段代码的作用是检查用户输入是否为"1234567"(设定的密码),在这段代码中,你可以看出C#选择结构的语法特征
if (条件)
{
代码块...
}
else
{
代码块...
}
显而易见,条件满足时执行if大括号下的代码块,不满足时执行else大括号下的代码块。
大括号的位置不定,"{"可以在if (条件)的后面。也可以在下一行独占一行,为了统一书写,本专栏内均使用独占一行,"}"符号同理。
代码块的缩进不是Python那样的必选项,但为了美观,建议进行缩进。
if-else if-else结构
我们修改上面的示例代码逻辑,添加一条检测到密码为00000000,则输出"管理员模式已开启"。
string user_input = Console.ReadLine();
if (user_input == "1234567")
{
Console.WriteLine("密码正确");
}
else if (user_input == "00000000")
{
Console.WriteLine("管理员模式已开启")
}
else
{
Console.WriteLine("错误");
}
这段代码同义转为Python代码如下:
user_input = input()
if user_input == "1234567":
print("密码正确")
elif user_input == "00000000":
print("管理员模式已开启")
else:
print("错误")
可以看出,else if即当if条件不满足时,会先检查是否满足else if中的条件,如果满足,执行else if下的代码,否则执行else下的代码。
当然,我们也可以将else if嵌套,叠上多层
int score = Convert.ToInt32(Console.ReadLine());
if (score == 100)
{
Console.WriteLine("满分");
}
else if (score >= 80)
{
Console.WriteLine("优秀");
}
else if (score >= 60)
{
Console.WriteLine("及格");
}
else
{
Console.WriteLine("不及格");
}
逻辑为(如果==100输出满分)(否则如果>=80输出优秀)(否则如果>=60输出及格)(否则输出不及格)
可以看出,当if不满足时,会一层一层地向下检查条件,直到所有条件全部不满足,才会执行else。一旦上面的任何一条条件满足,都不会继续向下检查条件,而是直接执行代码块并退出整个选择结构。
switch结构
先来看一个按照数字选择商品的程序:
int water_number = Convert.ToInt32(Console.ReadLine());
if (water_number == 0)
{
Console.WriteLine("可乐");
}
else if (water_number == 1)
{
Console.WriteLine("清新口味凝胶");
}
else if (water_number == 2)
{
Console.WriteLine("能量凝胶");
}
else if (water_number == 3)
{
Console.WriteLine("蛋白粉");
}
else if (water_number == 4)
{
Console.WriteLine("精致的粽子");
}
else
{
Console.WriteLine("暂未上架该商品");
}
可以看出,程序的逻辑是根据输入值的不同输出不同的商品名称,但是这样太麻烦了,有没有什么更好的选择结构呢?
看下面代码:
int water_number = Convert.ToInt32(Console.ReadLine());
switch (water_number)
{
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;
default:
Console.WriteLine("暂未上架该商品");
break;
}
两段代码作用相同,我们可以从中看出switch的基本结构:
switch (被比较值)
{
case 比较值1:
代码块...(当被比较值==比较值1时执行)
break;
case 比较值2:
代码块...(当被比较值==比较值2时执行)
break;
case 比较值3:(当被比较值==比较值3时执行)
代码块...
break;
case ...:
代码块...(...)
break;
default:
代码块...(当上面条件都不满足时执行)
break;
}
我们也可以让多个比较值拥有同一个代码块,也就是被比较值等于多个值时,都执行相同的代码:
int input_number = Convert.ToInt32(Console.ReadLine());
switch (input_number)
{
case 1:
case 3:
case 5:
case 7:
Console.WriteLine("单数日");
break;
case 2:
case 4:
case 6:
Console.WriteLine("双数日");
break;
default:
Console.WriteLine("没有该日期");
break;
}
switch在一些简单判断中运用,可以获得比if-else结构更短的运行时间。
就是这样啦!下篇写循环结构~

Comments NOTHING