流程控制简介
选择结构 (分支结构)
循环结构
顺序结构
-----------------------------------------
任何一个程序,都是这三种结构组合而成
if else
前言
判断一个数与5的关系?
//选择?
比较 --- 选择 提供判断的依据 --- 进行选择
比较:
C语言中通过 关系运算 和 逻辑运算 构造 选择判断的条件
关系运算
“ > ” “ >= ” “ < ” “ <= ” “ == ” “ != ”
int n;
n > 5 //关系表达式
//表达式都是有值 -- 结果 反映 一种关系成立与否
// 0 --- 假
// 1 --- 真
// 逻辑值
// C语言中 用int型来记录 逻辑结果
//表达式都是类型 -- 类型 (布尔类型) -- true false
int a = 9;
0<a<5 //与数学上的 表达式 含义不同 正确的应是a > 0 && a < 5
(0<a)<5//上式可看为这个,先是0<a结果为真,记1,之后1<5 结果为真
逻辑运算
&& 与(且)
|| 或
! 非
&& 与
运算规则:
一假则假
表达式1 && 表达式2
特性:
短路特性(截断特性)//表达式1为0则不计算表达式2
|| 或
运算规则:
一真则真
表达式1 || 表达式2
特性:
短路特性(截断特性)//表达式1为1则不计算表达式2
注意:
&& 及 || 都先算左边的表达式
! 非
运算规则:
真假相对
问题:
C语言中如何表示"真"和"假"?
整型 1 0
系统如何判断一个量的"真"和"假"?
规定:
0为假 //从数值角度 看 其值为0
0
'\0'
NULL (空指针) --- 编号0地址
非0就是真 //从数值角度 看 其不值为0
1 2 3 4
'a' 'b'
-1
选择语句:
1. if 语句
//形式1 ---处理单个情况 --单分支
//形式2 ---处理两种情况 --双分支
//形式3 ---处理多种情况 --多分支
形式1
语法形式:
if (表达式)
{
语句
} //复合语句
语义:
如果,表达式 为真
则 执行 语句 ,
语句执行完,也表示if语句结束了 程序继续往下
表达式 为假
表示if语句结束
程序继续往下
注意:
if(表达式) ; //不要写分号
// 形式2:
if (表达式)
{
语句1
}
else
{
语句2
}
语义:
如果 ,表达式为真
执行 语句1 ,语句1 执行结束,表示if语句结束,程序继续往后
表达式为假
执行 语句2 ,语句2 执行结束,表示if语句结束,程序继续往后
注意:
1. if (表达式) ; //不要写分号
2.
if (表达式)
{
语句1
}
else (表达式) 、//没有这种写法
{
语句2
}
//形式3 --多分支 --阶梯分支
语法:
if (表达式1) //?不要加分号
{
语句1;
}else if (表达式2) //? 不要加分号
{
语句2;
}else ...
....
{
}else
{
}
语义:
如果,表达式1 为真 ,执行语句1,语句1 执行结束,表示if语句结束,程序继续往后
表达式1 为假 ,
判断 表达式2 ,
为真 执行语句2,语句2 执行结束,表示if语句结束,程序继续往后
为假
判断 表达式3
...
注意:
1. if (表达式) ; //不能加分号
2. 有单独if语句
没有单独 else 语句?
else 一定是和某一个if配对的
3.对应的关系
如果有嵌套关系,
一般从最里面的else开始找,
往前找离else最近的还未使用的if配对
if ()
{
if ()
{
}
else
{
}
}
else
{
if ()
{
}
else
{
}
}
条件运算:
表达式1?表达式2:表达式3
含义:
判断 表达式1
真
执行表达式2
假
执行表达式3
if-else //语法结构 条件运算实际上就是if-else 简写
switch 语句
switch(表达式)
{
case 常量表达式1:
语句1
case 常量表达式2:
语句2
case 常量表达式n:
语句n
default
语句n+1
}
//
switch (表达式) // 表达式是一个 值
{
case 常量表达式1: //常量表达式1 不是判断条件 都是一个 值
语句1
break;
case 常量表达式2:
语句2
break;
case 常量表达式n:
语句n
break;
default
语句n+1
}
//语义:
求解 表达式
用表达式结果
与 下面case 后的常量表达式的结果 进行匹配
匹配成功,则执行对应case下的语句
直到遇到了break 或者是 遇到了 switch 语句 '}' (右花括号)
则结束
注意:
1.switch 后面表达式,必须是一个整型表达式
//不能是浮点型
2. case 后面 ,是一个整型常量表达式 //不能出现变量
3. label //标签
可以给执行语句起一个标签,标签来代表这句话
4. default 不一定写在最后
要求,default 最好也写上break