(换一种角度思考——比较适合游戏等界面
按键切换
时使用)
5.1决策分支
了解流程图符号
两种
选择结构语句
分别是
if语
句
和
switch语句
选择结构语句也称为
条件判断语句
或者分支语句。
5.2
(1种选择)
if 语句
(if在C#中其实是一个关键字)
语法
if(表达式)
{
语句
}
|
(相当于如果...那么 ...)
注意:①表达式必须使用
圆括号
括起来
②表达式:
关系
表达式或
逻辑
表达式
③“语句”可以使
单语句
也可以是
复合语句
(表达式:
关系表达式
或
逻辑表达式
)
if语句的使用形式
01 使用
逻辑运算符
→if(表达式1
&&
表达式2)
{
语句
}
02 if(表达式)
省略大括号
(尽量不省略)
if(表达式)
{
单一语句 ----------------------→ 单一语句
}
|
注:①
&&
为
逻辑与符号
②(尽量不省略){}大括号为了代码可读性
练习:
解:
1.Convert.ToInt32是什么意思?干什么的?
类型转换 比如
double x=15.6612;
int y=Convert.ToInt32(x) 这就是把double类型x显式转换成int类型
也可以用 int y=(int)x 进行转换
|
if语句中表达式为bool(布尔)值的规范写法
bool(布尔类型变量)
如果在表达式中使用了布尔型变量,那么将根据变量值的真假而赋予整型值1或0。要把一个整数变量转换成布尔型变量,如果整型值为0,则其布尔型值为假,反之如果整型值为非0,则其布尔值为真。
运算符的使用
“=”和“==”的区别
“=”一个等号为赋值
“==”两个等号为比较
1、C语言中 2个等号为关系运算符,意思是:判断两边的值是否相等。
== 关系运算符的表现形式为: 变量1 == 变量2
2、C语言中 1个等号为赋值运算符,意思是:赋值
如:x = 5,意思是将常量值5赋值给变量x
if(i&1==1)这句话表示:如果是 奇数 则
i&1 -- 按位与运算,取 2进制整数 i 的最低位,如果最低位是1 则得1,如果最低位是0 则得0。 奇数 i 的最低位 是1,偶数i 的最低位 是0。
(位与运算 :
位与
运算 的
运算符为
&
——有0即为0
)
|
5.2.2
(2种选择)
if...else 语句
(二选一问题时运用,
如果... 否则...
)
语法
if(表达式)
{
语句1
}
else
{
语句2
}
|
注:①表达式:
关系表达
式
或逻辑表达式
②“语句1或者语句2 ”可以是
单语句
也可以是
复合语句
(①
复合语句把多个语句用括号{}括起来组成的一个语句。 在程序中应把复合语句看成是单条语句,而不是多条语句。
②
简单语句则只有一个分号。)
if...else语句与条件运算符
if(表达式)
语句1
else
语句2
if...else条件控制语句和条件运算符 相似
如果运算过程中有
2个语句
可以使用条件运算符,更加简便更推荐使用;
|
else不可以单独使用,必须和关键字if一起使用。
if语句多于else语句的问题
程序中使用if...else语句时,如果出现if语句多于else语句的情况,在没有特殊处理的情况下,else永远都与最后出现的if语句相匹配。
5.2.3
(多种选择)
if...else
if...else
语句
if(表达式1)
{
语句1
}
else if(表达式2)
注意:else和if之间有一个空格
{
语句2
}
...
else if(表达式n)
{
语句n
}
else
{
语句n+1
}
|
示例
strName
是自定义的字符串。比如:Dim strName AS String
if选择语句时,尽量遵循以下原则:、
①使用bool变量作为
判断条件,假设bool变量flag
if(flag) //表示为真
if(!flag) //表示为假
错误写法
if(flag==ture)
if (flag==false)
②使用浮点类型变量与0值进行
比较时
if(d_value>=-0.00001)//这里的0.0001是d_value的精度,d_value是double类型
value表示属性或关键字
错误写法
if(d_value==0.0)
③使用if(1==a)
错误写法
if(a==1)
|
5.2.4 if语句的嵌套
1.if语句中嵌套if...else
if(表达式1)
{
if(表达式2)
{
//表达式2为真时执行 ......
}
else
{
// 表达式为2为假时执行.......
}
}
|
2.if...else中嵌套if...else if
if(表达式1)
{
if(表达式2)
{
//表达式2为真时执行 ......
}
else if(表达式3)
{
// 表达式3为真时执行.......
}
}
else
{
//表达式1为假时执行......
}
|
if三种语句间都是可以任意互相嵌套的
练习:“四年一润,百年不润,四百年在润。”
思路:输入的数字能被4整除,而不能被100整除,能够被400整除。
小白思考步骤:
①
主要是什么?
想知道随意输入的年份是不是闰年。
提示语句为”请输入一个年份:“
②用什么变量?
使用int变量,int变量为整数(1.2.3...年份为整数)变量。
③输出
Convert.ToInt32前置类型转换
④
四年一润,百年不润,四百年在润进行判断
这个年份是不是同时符合3个条件
先是否被4整除,再检验是否被100整除,再测试是否被400整除。
if(iYear%4==0)
{
if(iYear%100==0)
{
if(iYear%400==0)
{
Console.WriteLine("这是闰年");
}
else
{
Console.WriteLine("这不是闰年");
}
}
if语句嵌套时的{}使用问题
5.3
(多选一)
switch多分支语句
switch(表达式) switch表达式只能是整型/char/string/bool类型
{
case常量表达式1:
语句1;
break;
case常量表达式2
:
注意:这里是冒号,不是分号
语句2;
break;
用于退出switch语句,不能省略
...
case常量表达式n;
语句n;
break;
default:
语句n+1;
break;
}
|
注意
①case后的各常量值不可以相同,否则会出现错误
②case后面的语句块可以多条语句,不必使用大括号{}括起来。
③case语句和default语句的顺序可以改变,但不会影响程序执行结果。
④一个switch语句中只能有一个default语句,而且default语句可以省略。
举例:
选择游戏角色
时可以使用
switch语句
switch的判断参数可以是double吗?
使用switch语句时,常量表达式的值绝不可以是浮点类型!
case标签中的break可以省略吗?
不能省略!!!
5.3.2 switch与if...else if...else的区别
自己动手尝试
题目
switch语句结果
(自己尝试版本)
对应老师修改——写完整一些
if...else if...else语句