if语句
决策分支
概述:计算机主要功能是给用户提供计算功能,计算功能过程中会遇到不同情况,不同情况计算机提供不同的处理方法,程序开发语言拥有处理决策能力。程序开发里通过流程图描述决策分支。
流程图
概述:使用图形方式描述系统不同状态的不同处理方法,开发人员使用流程图表现程序的结构。
基本流程图符号:
使用流程图描述决策分支例子:
C#两种决策分支语句: if 和 switch 语句。
别名叫法:条件判断语句或选择结构语句或分支语句--需要在开发程序时需要进行选择的过程。
if语句 三种形式:最简单if语句; if...else语句; if...else if...else语句
最简单if语句
C#里用这个if关键字组成选择结构语句。
最简单if语句语法:
大括号里面是要执行的语句。if语句如果满足条件放到大括号里面。
说明:
表达式必须是:关系表达式或逻辑表达式返回的结果是T或F的布尔值。表达式结果必须是布尔值。
语句:单或复合语句用大括号括起来。
执行流程:判断表达式值如果是真的话执行大括号里面的语句,如果是假直接跳过大括号里面的语句执行下一条语句 -最简单if语句形式 汉语:如果...那么
if语句使用中几种使用形式(表达式:关系或逻辑):
1.使用逻辑表达式时使用逻辑运算符组成逻辑表达式。
if(表达式1 && 表达式2) //逻辑与符号用逻辑运算符
{
语句 //如果条件满足执行相应的语句
}
2.如果只有单一语句和下面一种形式是一样的。把大括号省略掉直接编写单一语句。
为了代码可读性不管if后有几条语句也好,推荐使用1形式不要把大括号省略掉。
练一练:输入求余2判断是0(判定条件),是输出偶数,不是输出输入数据。
判断输入的整数是否是偶数,输出这个整数。
cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace if条件判断
{
internal class Program
{
static void Main(string[] args)
{
//判断输入的整数是否是偶数,输出这个整数。
Console.WriteLine("请输入一个整数:"); //输入用CWL输入
int iNum = Convert.ToInt32(Console.ReadLine()); //输入是整数定义int变量来记录 CRL返回是一个字符串类型数据需要进行强制类型转换 Convert.ToInt32强制转换为int类型数据
if (iNum %2== 0) //if语句判断 =0是偶数
{
Console.WriteLine("是偶数");
}
Console.ReadLine(); //不是偶数没有任何输出
}
}
}
if语句使用时候注意思想:if语句中表达式为bool值的规范写法。
第一种不规范,flag已经是布尔值没必要判断是T或F
第二种flag是否是一个false值第一种写法不规范
如果if后面跟的是布尔值直接写布尔变量就可以。
使用if语句时的运算符使用问题:
判断str是不是ios 必须用==
C#里面 = 赋值运算符 ==等于运算符
if(表达式)后面可以加分号吗?--不能
加分号相当于空语句,判断虽然中了500万,执行是空语句什么都不会做。下面不管是什么情况下都会执行。
使用if语句的逻辑错误:if语句没加{} 不管满不满足都会;两条语句包含其中满足500万情况下同时执行。if语句不管有几条都会加{} --增强代码可读性,避免出现类似错误。

if...else语句 --有两种选择情况下用这个语句实现

if判断表达式执行语句1,;不满足执行else语句里的语句2
返回值必须是T或F的布尔值 单语句或复合语句
执行流程:根据表达式判定结果真的执行语句一,假的执行语句二。 ---最后再接着执行下面的语句。
if...else语句应用
试一试:判断输入的整数是奇数还是偶数?
输入求余2判断是否等于01,是等于0是偶数输出偶数,不是返回值是假输出奇数
cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace if条件判断
{
internal class Program
{
static void Main(string[] args)
{
//判断输入的整数是否是偶数,输出这个整数。
Console.WriteLine("请输入一个整数:"); //输入用CWL输入
int iNum = Convert.ToInt32(Console.ReadLine()); //输入是整数定义int变量来记录 CRL返回是一个字符串类型数据需要进行强制类型转换 Convert.ToInt32强制转换为int类型数据
if (iNum %2== 0) //if语句判断 =0是偶数
{
Console.WriteLine("是偶数");
}
else
{
Console.WriteLine("是奇数");
}
Console.ReadLine(); //不是偶数没有任何输出
}
}
}
语法:满足表达式执行语句1,如果不满足执行else里面语句2
跟前面讲过的条件运算符等效。前面表达式,满足执行语句1,不满足执行语句2--等价关系
if(表达式)
语句1 else
语句2 
尝试使用条件运算符对前面判断某个数是奇数还是偶数的实例进行修改。
cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace if条件判断
{
internal class Program
{
static void Main(string[] args)
{
//尝试使用条件运算符对前面判断某个数是奇数还是偶数的实例进行修改。
Console.WriteLine("请输入一个整数:"); //输入用CWL输入
int iNum = Convert.ToInt32(Console.ReadLine()); //输入是整数定义int变量来记录 CRL返回是一个字符串类型数据需要进行强制类型转换 Convert.ToInt32强制转换为int类型数据
string str= iNum % 2 == 0 ? "是偶数":"是奇数"; //条件运算符不能作为单独语句出现,定义变量接收值
Console.WriteLine(str);//输出变量
Console.ReadLine(); //条件运算符实现与if...else相同功能
}
}
}
条件运算符实现与if...else相同的功能
使用条件运算符时代码比if...else更加简洁。
程序中如果遇到只有两种选择情况下使用条件运算符代替if...else
使用if...else需要注意的内容:


else与if有临近匹配原则。
if:有一种选择情况。
if...else:有两种选择情况。
多分支选择语句:if...else if...else语句
可以对多个表达式进行判断执行相应的语句。可以进行多种选择判断。 slse与if之间有一个空格。
语法: 
if (表达式1)
{
语句1
}
else if(表达式2)
{
语句2
}
...
else if(表达式n)
{
语句n
}
else
{
语句n+1
}

执行流程:
if...else if...else语句的执行流程

流程:对多种条件进行判断,每一种条件会执行相应的语句;当最后一个判断成立执行语句n;不成立执行else后的语句n+1

//多种选择时能够用到这种语句
cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace if条件判断
{
internal class Program
{
static void Main(string[] args)
{
//银行
Console.WriteLine("请输入银行的简称(比如ICBC、CBC):"); //输出提示
string strName = Console.ReadLine();//使用字符串变量记录输入内容
if (strName == "ICBC") //判断如果是ICBC
{
Console.WriteLine("中国工商银行"); //输出中国工商银行
}
else if (strName == "CBC") //如果不满足接下来再进行判断如果是CBC
{
Console.WriteLine("中国建设银行");
}
else if(strName == "ABC")//以上两个条件都不满足情况下判断输入的是不是ABC
{
Console.WriteLine("中国农业银行");
}
else//三个条件都不满足执行else里面的语句
{
Console.WriteLine("输入银行简称错误!"); //提示用户输入银行简称错误
}
Console.ReadLine();
}
}
}
if语句的嵌套
三种形式间都可以进行相互嵌套。
if判断表达式1 如果满足在{}嵌套if...else if...else嵌套到if语句里面 判断表达式2是否满足,满足执行为真,不满足执行为假。
最外层if...else语句,在if...else里嵌套一个 if...else if语句
if语句三种形式可以任意相互嵌套。 开发程序中根据自身需要选择合适的嵌套方式。
if语句嵌套的应用
判断输入年份是不是闰年--"四年一闰,百年不闰,四百年再闰。"
cs
using System;
using System.Collections.Generic;
using System.Diagnostics.Eventing.Reader;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace if条件判断
{
internal class Program
{
static void Main(string[] args)
{
//判断输入年份是不是闰年--"四年一闰,百年不闰,四百年再闰。"
Console.WriteLine("请输入一个年份:"); //输入提示进行输入
int iYear=Convert.ToInt32((Console.ReadLine())); //int类型变量接收输入再完成输入
if (iYear % 4 == 0) //判断输入年份能否被4整除 求余4是否等于0 能被4整除话判断能否被100整除
{
if (iYear % 100 == 0) //求余100判断是不是=0,是否能被100整除
{
if (iYear % 400 == 0)//等于0判断能否被400整除 能被100整除判断能否被400整除 能被400整除是闰年 不能不是闰年
{
Console.WriteLine("这是闰年");
}
else
{
Console.WriteLine("这不是闰年");
}
}
else
{
Console.WriteLine("这是闰年");
}
}
else
{
Console.WriteLine("这不是闰年");
}
Console.ReadLine();
}
}
}
if语句嵌套时使用问题
if语句嵌套时的注意{}使用问题
定义两个变量进行赋值,if...else...if分别进行判断执行相应语句,两个里面嵌套if...else语句,左边if else嵌套else if里面 第一个与else if对应的大括号对应
改成右边大括号往上移 else与else if if相匹配,完整的第二种结构。 if else if
输出结果不一样
{}关系到else或else if与那个if相匹配,执行结果都不一样
