if(表达式)
{
语句块
}
( )
括起来,它可以是一个单纯的布尔变量或常量,也可以是关系表达式或逻辑表达式。
图1:if 语句流程图
注意,使用 if 语句时,如果只有一条语句,则省略{ }是没有语法错误的,而且不影响程序的执行,但是为了程序代码的可读性,建议不要省略。
示例1:使用 if 语句判断用户输入的数字是不是奇数,代码如下:static void Main(string[] args) { Console.WriteLine("请输入一个数字:"); int iInput = Convert.ToInt32(Console.ReadLine()); //记录用户的输入 if (iInput % 2 != 0) //使用if语句进行判断 { Console.WriteLine(iInput + " 是一个奇数!"); } Console.ReadLine(); }代码注解:
图2:奇数的运行结果
图3:不是奇数的运行结果
{ }
,例如下面的代码:
if (a > b) max = a;但是不建议开发人员使用这种形式,不管 if 语句后面有多少要执行的语句,都建议使用大括号
{ }
括起来,因为这样方便开发人员阅读代码。
if (i == 5) Console.WriteLine("i的值是5");上面两行代码的本意是当变量 i 的值为 5 时,执行下面的输出语句。但是,如果在 if 判断语句后面多加了分号,代码如下:
if (i == 5); Console.WriteLine("i的值是5");下面的输出语句将会无条件执行,if语句就起不到判断的作用。
if(flag) { i++; j++; }但是,如果省略大括号
{ }
,代码如下。
if(flag) i++; j++;执行程序时,无论 flag 是否为 true,j++ 都会无条件执行。这显然与程序的本意不符,但程序并不会报告异常,因此这种错误很难发现。
if(表达式)
{
语句块1;
}
else
{
语句块2;
}
图4:if…else 语句流程图
if(a > 0) b = a; else b = -a;可以简写成如下代码。
b = a > 0 ? a : -a;
上述代码主要实现求绝对值的功能,如果 a > 0,就把a的值赋给变量b;否则,将 −a 的值赋给变量 b。使用条件运算符的好处是可以使代码简洁,并且有一个返回值。static void Main(string[] args) { Console.WriteLine("请输入你的分数:"); int score = Convert.ToInt32(Console.ReadLine());//记录用户的输入 if (score > 90) //判断输入是否大于90 { Console.WriteLine("你非常优秀!"); } else //不大于90的情况 { Console.WriteLine("希望你继续努力!"); } Console.ReadLine(); }运行程序,当输入一个大于 90 的数时(如 93),运行结果如图5所示;当输入一个小于 90 的数时(如 87),运行结果如图6所示。
图5:输入大于90的数的运行结果
图6:输入小于90的数的运行结果
else { max=a; }在程序中使用 if…else 语句时,如果出现 if 语句多于 else 语句的情况,将会出现悬垂 else 问题——究竟 else 和哪个 if 相匹配呢?例如下面的代码。
if(x>1) if(y>x) y++; else x++;如果遇到上面的情况,记住,在没有特殊处理的情况下,else 永远都与最后出现的 if 语句相匹配,即上面代码中的 else 是与 if(y>x) 语句相匹配的。
if(x>1) { if(y>x) y++; } else x++;这样,else 将与 if(x>1) 语句相匹配。
技巧:建议总是在 if 后面使用大括号{ }
将要执行的语句括起来,这样可以避免程序代码混乱。
图7:购物时的付款页面
if(表达式1)
{
语句1
}
else if(表达式2)
{
语句2
}
else if(表达式3)
{
语句3
}
…
else if(表达式m)
{
语句m
}
else
{
语句n
}
( )
括起来。表达式部分可以是一个单纯的布尔变量或常量,也可以是关系表达式或逻辑表达式。
图8:if…else if…else 语句的流程图
static void Main(string[] args) { int YouAge = 0; //声明一个int类型的变量YouAge,值为0 Console.WriteLine("请输入您的年龄:"); YouAge = int.Parse(Console.ReadLine()); //获取用户输入的数据 if (YouAge <= 18) //调用if语句判断输入的数据是否小于等于18 { //如果小于等于18则输出提示信息 Console.WriteLine("您的年龄还小,要努力奋斗哦!"); } else if (YouAge > 18 && YouAge <= 30) //判断是否大于18岁并小于等于30岁 { //如果输入的年龄大于18岁并且小于等于30岁则输出提示信息 Console.WriteLine("您现在的阶段正是努力奋斗的黄金阶段!"); } //判断输入的年龄是否大于30岁并小于等于50岁 else if (YouAge > 30 && YouAge <= 50) { //如果输入的年龄大于30岁而小于等于50岁则输出提示信息 Console.WriteLine("您现在的阶段正是人生的黄金阶段!"); } else { Console.WriteLine("最美不过夕阳红!"); } Console.ReadLine(); }代码注解:第 5 行代码中的 int.Parse 方法用来将用户的输入强制转换成 int 类型。
图9:if…else if…else 多分支语句的使用
if(flag) //表示为真
if(!flag) //表示为假
if(flag==true)
if(flag==false)
if(d_value>=-0.00001&&d_value<=0.00001) //这里的0.00001是d_value的精度,d_value是double类型变量
不符合规范的书写格式如下:if(d_value==0.0)
if(表达式1)
{
if(表达式2)
语句1;
else
语句2;
}
if(表达式1)
{
if(表达式2)
语句1;
else
语句2;
}
else
{
if(表达式3)
语句3;
else
语句4;
}
static void Main(string[] args) { Console.WriteLine("请输入一个年份:"); int iYear = Convert.ToInt32(Console.ReadLine()); //记录用户输入的年份 if (iYear % 4 == 0) //四年一闰 { if (iYear % 100 == 0) { if (iYear % 400 == 0) //四百年再闰 { Console.WriteLine("这是闰年"); } else //百年不闰 { Console.WriteLine("这不是闰年"); } } else { Console.WriteLine("这是闰年"); } } else { Console.WriteLine("这不是闰年"); } Console.ReadLine(); }代码注解
图10:输入闰年年份的结果
图11:输入非闰年年份的结果
本文链接:http://task.lmcjl.com/news/15179.html