day5 流程控制
流程
顺序结构
分支结构
循环结构
任何一个程序都可以是这三种结构的组合。
分支结构(选择)
选择 --- 判断
能做判断? --- 通过运算--给构造出判断的条件
构造判断的条件
关系运算 (大小关系)
>
>=
<
<=
==
!=
1 > 2 //表达式
//结果
//数据类型
比大小(简洁版)
三个比大小 首选长款代码 可读性高
关系运算的结果:
真 1
假 0
逻辑结果
注意:
c语言中不存在布尔类型,关系运算的结果 用 整型类型保存
python java c++ //关系结果 --- true false
1
a = 2;
(1<3)
练习:
a = 1, b = 2 ,c = 3
a>b==c //0
a+b>c //0
a=(b>c) //b > c
a=b>c
逻辑运算
与
&&
规则: 一假则假
表达式1 && 表达式2
或
||
规则: 一真则真
表达式1 || 表达式2
非
!
规则:真假相对
逻辑运算 用来 组合 多个关系
算术>关系运算>逻辑运算> 赋值>逗号
问题:
C语言中如何表示“真”和“假”? // 0 --假
// 1 --真
系统如何判断一个量的“真“和“假"?
0 表示假
非0 表示真
-1 //数值角度 看非0
0 //假
'\0' //
'a'
(1>2) && (a++)
&&截断特性(短路特性)
||也有截断特性
注意点:记
练习2:
1、 表达式 10!=9 的值是__1_____。
2、 设x,y,z和t均为int型变量,执行以下语句:
x=y=z=1;
t=++x||++y&&++z;
后t的值为___1_________。
t = (++x) || ((++y) && (++z));
2
语句:
语法格式,
语法格式(语义)
形式1:
if (表达式) //表达式 做判断的条件
{
语句
}//复合语句
含义:
首先,判断 "表达式"?
真
执行 语句
语句执行完,表示if语句结束,程序继续往下
假
表示if语句结束,程序继续往下
一定要记准格式
main()
{
...
if ()
{
}
...
}
注意:
if (表达式) ;
{
语句;
}
形式2:
if (表达式)
{
语句1
}else
{
语句2
}
含义:
首先 判断"表达式"
真:
执行 ”语句1"
语句1 执行完,表示if语句结束,程序继续往下
假:
执行 ”语句2"
语句2 执行完,表示if语句结束,程序继续往下
练习:
输入两个数,找出最大值
找出三个中的最大值
--------------------------------------------------
形式3: 多分支语句
if (表达式1) //注意: 不能加分号
{
语句1
}else if (表达式2) //注意: 不能加分号
{
语句2;
}else if (表达式3)//注意: 不能加分号
{
语句3;
}else if (表达式n)//注意: 不能加分号
{
}else
{
}
if-else-if
含义:
判断 "表达式1"
真 执行 "语句1" 语句1 执行完,表示if语句结束,程序继续往下
假
判断"表达式2"
真 执行 "语句2" 语句2 执行完,表示if语句结束,程序继续往下
假
判断"表达式3"
真 执行 "语句3" 语句3 执行完,表示if语句结束,程序继续往下
假
...
判断"表达式n"
真 执行 "语句n" 语句n 执行完,表示if语句结束,程序继续往下
假
执行 else后面语句 ,执行完,程序继续往下
练习:
学生成绩:
90-100 --- A
80-89 --- B
70-79 --- C
60-69 --- D
<=59 --- E
score >= 90 && score <= 100
1.不存在单独的else语句 ,else出现一定有一个if与之对应
2.else 与 if匹配规则
一定从最里面开始匹配
else 与 最近 前面一个if匹配
if ()
{
if ()
{
if ()
{
}
else
{
}
}else
{
}
}else
{
}
练习:
判断一个年份是不是闰年
条件:
能被4整除 同时 不能被100 整除
普通闰年:
公历年份是4的倍数的,且不是100的倍数,为普通闰年(如2004年、2020年就是闰年)。
世纪闰年:
公历年份是整百数的,必须是400的倍数才是世纪闰年(如1900年不是世纪闰年,2000年是世纪闰年)。
条件:
1. 能被4整除 同时 不能被100 整除
2. 能被400整除
leapYear
练习:
输入一个月份,输出对应月份的天数
1 3 5 7 8 10 12 -- 31天
4 6 9 11 -- 30天
2 -- 29
28
条件运算:
表达式1 ? 表达式2 : 表达式3
问一问 表达式1 ? --是真 还是 假
真 ,执行 表达式2
假 ,执行 表达式3
练习:
? : //找两个数的最大值
switch //多分支的情况
switch(表达式) //整型表达式
{
case 常量表达式: //1+b
语句;
break;
case 常量表达式:
语句;
break;
case 常量表达式:
语句;
break;
default: //默认
语句;
break;
}
含义:
求解 "表达式"
根据 结果 ,匹配 下面case后面的值
匹配上后,
则执行对应case下的语句 ,
直到遇到了break 或者是switch 右} (花括号)
注意:
1.switch 后表达式 需要是一个 整型表达式
2.case后面是,常量表达式,不能出现变量