一、单向判断if
- 单向判断:对某一种符合的情况作相应的操作
- 样式:
* if(真假表达式){
* 操作语句
* } 执行流程:首先判断真假表达式的真假,若为真,则进入{ }执行里面的操作语句。若为假,则直接跳过if语句。
当if条件判断只包含一个单条语句作为操作语句时,可以省略if的{ },系统会自动识别这条语句被if包含。
- 若if条件判断包含多条语句即代码块做为操作语句时,代码块必须放在if后的{}内,否则系统只能识别第一条语句被if包含,其余均为独立语句与if无关。
//成绩
float score = 58;
if (!(score < 60))
{
Console.WriteLine("当前学生成绩及格。");
Console.WriteLine(score);
}
二、双向判断if…else
- 双向判断:对是否满足条件判断的两个方向做出相应的处理
- 样式:
* if(真假表达式){
* 操作语句1
* }
* else{
* 操作语句2
* } - 执行流程:先判断表达式的真假,若为真,则进入if{ }执行操作语句1,跳过else{ }。若为假,则跳过if{ },执行else{ }中的操作语句2。
Console.WriteLine("请输入任意一个正整数:");
uint num = uint.Parse(Console.ReadLine());
if (num % 3 == 0 && num % 7 == 0)
{
Console.WriteLine("{0}既是3的倍数又是7的倍数", num);
}
else
{
Console.WriteLine("{0}不是3和7的共同倍数", num);
}
Console.WriteLine();
Console.WriteLine("请输入任意一个三位数:");
int n = int.Parse(Console.ReadLine());
//获取n的绝对值
int tmp = Math.Abs(n);
//获取当前数值的个位数
int singleDigit = tmp % 10;
//获取当前数值的十位数
int tenDigit = tmp / 10 % 10;
//判断该数是否满足条件
if (singleDigit + tenDigit == 10)
{
Console.WriteLine("{0}符合十位数和个位数相加之和为10的条件。", n);
}
else
{
Console.WriteLine("{0}不符合十位数和个位数相加之和为10的条件。", n);
}
二、多向判断if…else if…else
- 多向判断:对一个事物可能出现的多种情况做指定的处理
- 样式:
* if(真假表达式1){
* 代码块1
* }
* else if(真假表达式2){
* 代码块2
* }
* else if(真假表达式3){
* 代码块3
* }
* ……对应多种情况可以有任意多个else if 根据实际情况进行处理
* else{ //需要对以上各种情况均不满足的相反方向做指定操作,就添加else。否则无需处理else。
* 代码块4
* } - 执行流程:首先判断表达式1的真假,若为真,则执行代码块1,然后跳出if语句。若为假,则跳过代码块1,判断表达式2的真假,若为真,则执行代码块2,然后跳出if语句。若为假,则也跳过代码块2,继续向下判断表达式3的真假,逻辑同上,直到遇到某种为真的情况,或者遇到else,或者没有else也没有任何符合情况,跳出if语句。
Console.WriteLine("请输入当前学生的成绩:");
float stuScore = float.Parse(Console.ReadLine());
//判断当前成绩是否在有效范围
if (stuScore < 0 || stuScore > 100)
Console.WriteLine("当前成绩无效,请退出程序重新输入。");
else
{
//嵌套条件判断
if (stuScore >= 90)
{
Console.WriteLine("优秀");
}
else if (stuScore >= 80)
{
Console.WriteLine("良好");
}
else if (stuScore >= 60)
{
Console.WriteLine("及格");
}
else
{
Console.WriteLine("不及格");
}
}
四、switch语句
if和switch都属于条件判断语句。但是能用switch语句处理的操作,都能通过if语句处理。而通过if语句能处理的操作未必能通过switch语句处理。
- switch使用场景:当需要对一个表达式的多种值的情况做特定的处理时,就使用switch语句。
- if语句使用场景:通常用来进行少数的条件判断或区间判断。
- 样式:
* switch(表达式1)
* {
* case 分支表达式1:
* 代码块1;
* break;
* case 分支表达式2:
* 代码块2;
* break;
* ……..
* default:
* 代码块3;
* break;
* } - switch执行流程:首先计算表达式1的值,然后判断选择分支,找到对应表达式1的值得分支,然后执行对应的代码块,跳过其它分支,退出switch。若没有符合条件的值,则若存在default,则执行default中的代码块,否则直接跳出switch。
- 注意:
- switch之后的()中写入要判断对应值情况的表达式。各个分支对应的是其上表达式的需要操作的值,因此分支表达式的值类型必须与switch之后表达式的值类型相同。
- 各分支语句之后的表达式,必须是常量或者由常量和运算符组成的能得出唯一值得表达式。
- 各分支不能出现分支值相同的情况,必须不同。
break
- 作用:在switch语句中用来终止跳出当前switch语句
- 不可以省略break的情况:当当前分支包含独立的代码块语句实现时,那么该分支必须要有自己的break。不可以省略
- 可以省略break的情况:当多个连续的分支,共用相同的代码块实现,那可以将代码块写在连贯的最后一个分支中,其上的分支就可以省略break,系统会自动向下找到对应的代码块实现。
//输入一个在1-7之间的数字,判断输出当天是星期几。
Console.WriteLine("请输入一个1-7之间的数字,描述今天是星期几:");
//获取输入
int num = int.Parse(Console.ReadLine());
//选择判断
switch (num) {
case 1:
{
int nn = 10;
Console.WriteLine("星期一");
}
break;
case 2:
{
int nn = 5;
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;
default:
Console.WriteLine("输入错误,请退出程序重新输入。");
break;
}