第三讲选择与循环 本讲主要内容: 。关系运算,即比较大小 ·逻辑运算:与、或、非、异或 ·选择语句(也成为条件语句,分支语句):1f,switch 。循环语句:whi1e,do.while,for ·循环的终止:continue,.break 3.1关系运算与逻辑运算 )关系运算,即比较大小:><=>=<= ·结论是真则返回true,否则返回false 。C+中用1表示true,g表示false ·bool型变量的值为g时表示false,其他它值都表示true ·注意=与=的区别 ·对浮点数进行比较运算时尽量不要使用= (2)逻辑运算:&(逻辑与),川(逻辑或),1(逻辑非) 。表达式188表达式2 ,先计算表达式1的值,若是true,再计算表达式2的值: 若表达式1的值是false,则不再计算表达式2 。表达式1川表达式2 ,先计算表达式1的值,若是false,再计算表达式2的值 -若表达式1的值是true,则不再计算表达式2. 山注记:一定要注意&和川的运算方式 ·优先级:!优于88优于1川 ()条件运算符:?: 条件表达式?表达式1:表达式2 ·C+中唯一的三目运算符; ·条件表达式为直时返回表达式1的值,否则返回表达式2的值 ·表达式1的值和表达式2的值的数据类型要一致 20
第三讲 选择与循环 本讲主要内容: • 关系运算, 即比较大小 • 逻辑运算: 与、或、非、异或 • 选择语句(也成为条件语句, 分支语句): if, switch • 循环语句: while, do ... while, for • 循环的终止: continue, break 3.1 关系运算与逻辑运算 (1) 关系运算, 即比较大小: > < == >= <= != • 结论是真则返回 true, 否则返回 false • C++ 中用 1 表示 true, 0 表示 false • bool 型变量的值为 0 时表示 false, 其他它值都表示 true • 注意 == 与 = 的区别 • 对浮点数进行比较运算时尽量不要使用 == (2) 逻辑运算: &&(逻辑与), ||(逻辑或), !(逻辑非) • 表达式 1 && 表达式 2 先计算 表达式 1 的值, 若是 true, 再计算 表达式 2 的值; 若 表达式 1 的值是 false, 则不再计算 表达式 2. • 表达式 1 || 表达式 2 先计算 表达式 1 的值, 若是 false, 再计算 表达式 2 的值; 若 表达式 1 的值是 true, 则不再计算 表达式 2. b 注记:一定要注意 && 和 || 的运算方式. • 优先级: ! 优于 && 优于 || . (3) 条件运算符: ? : ✞ ☎ 条件表达式 ? 表达式1 : 表达式2 ✝ ✆ • C++ 中唯一的 三目运算符; • 条件表达式 为真时返回 表达式 1 的值, 否则返回 表达式 2 的值; • 表达式 1 的值和 表达式 2 的值的数据类型要一致. 20 仅供课堂教学使用,请勿外传
3,2选择结构 ·21 例3.1关系运算举例 (ex@3_boo1_01.cpp) 白注记:对于浮点数,慎用相等比较运算 (ex03_boo1_02.cpp) 3.2选择结构 在C+语言中,选择结构有两种实现方式:if和switch 3.2.11F语句 (山)单分支: if(条件表达式)语句/如果条件表达式为true,则执行后面的语句,否则不执行 白注记:这里的语句可以是复合语向(如果是复合语向的话,别忘了大括号!) (2)双分支: 1F(条件表达式) 语句1 else 语的2 ∥如果“条件表达式”的值为true,则执行“语句1”,否则执行“语句2 (3)多分支: 1f(条件表达式) 语句1 else if(条件表达式) 语句2 else if(条件表达式) 语句3 else 语句n 注记:条件表达式两边的小括号不能省略! (④1f语句可以嵌套。 (5⑤)嵌套时每一层if都要和else配套,若没有else,则需将该层1f语句用()括起来, http://math.ecnu.edu.cn/-jypan
3.2 选择结构 · 21 · 例 3.1 关系运算举例. (ex03_bool_01.cpp) b 注记:对于浮点数, 慎用相等比较运算. (ex03_bool_02.cpp) 3.2 选择结构 在 C++ 语言中, 选择结构有两种实现方式: if 和 switch 3.2.1 IF 语句 (1) 单分支: ✞ ☎ if (条件表达式) 语句 // 如果 条件表达式 为 true, 则执行后面的语句, 否则不执行 ✝ ✆ b 注记:这里的语句可以是复合语句(如果是复合语句的话, 别忘了大括号!) (2) 双分支: ✞ ☎ if (条件表达式) 语句1 else 语句2 // 如果“条件表达式”的值为 true, 则执行“语句1”, 否则执行“语句2” ✝ ✆ (3) 多分支: ✞ ☎ if (条件表达式) 语句1 else if (条件表达式) 语句2 else if (条件表达式) 语句3 ... else 语句n ✝ ✆ b 注记:条件表达式两边的小括号不能省略! (4) if 语句可以嵌套; (5) 嵌套时每一层 if 都要和 else 配套, 若没有 else, 则需将该层 if 语句用 { } 括起来. http://math.ecnu.edu.cn/~jypan 仅供课堂教学使用,请勿外传
·22. 第三讲选抒与循环 例3.2IF嵌套举例:计算一个整数的符号。 (ex03_if_3.cpp) 3.2.2 SWITCH结构 switch(表达式)/这里的表达式的值可以是整型、字特型或枚举型 case常量表达式1: 语句 ca5e常量表达式2: 语句 case常量表达式n: 语句 default: 语句 ()先计算switch后面的“表达式”的值,然后依次与每个ca5e后面的“常量表达式”进行匹配, 一旦匹配成功,则开始执行其后面的语句,包括其后面所有case以及default的语句(除非遇到 break); (2)如果没有匹配的,则执行default后面的语句: (3)default不是必需的,即可以没有; (④每个case分支最后一般都会加上break语句: (5)每个case后面的常量表达式的值不能相同: (O每个ca5e后面可以有多个语句(复合语句),但可以不用{. 例33 SWITCH结构举例. (ex03_switch.cpp) 3.3循环结构 ·重复执行:代码不变,但数据在变: ·循环结构的三种实现方式:while循环,do while循环和for循环. ·循环可以嵌套 3.3.1WHLE循环 whilet(条件表达式) 循环体语句 http://math.ecnu.edu.cn/~jypan
· 22 · 第三讲 选择与循环 例 3.2 IF 嵌套举例: 计算一个整数的符号. (ex03_if_3.cpp) 3.2.2 SWITCH 结构 ✞ ☎ switch(表达式) // 这里的 表达式 的值可以是整型、字符型或枚举型 { case 常量表达式1: 语句 case 常量表达式2: 语句 ... case 常量表达式n: 语句 default: 语句 } ✝ ✆ (1) 先计算 switch 后面的“表达式”的值, 然后依次与每个 case 后面的“常量表达式”进行匹配, 一旦匹配成功, 则开始执行其后面的语句, 包括其后面所有 case 以及 default 的语句(除非遇到 break); (2) 如果没有匹配的, 则执行 default 后面的语句; (3) default 不是必需的, 即可以没有; (4) 每个 case 分支最后一般都会加上 break 语句; (5) 每个 case 后面的常量表达式的值不能相同; (6) 每个 case 后面可以有多个语句(复合语句), 但可以不用 { }. 例 3.3 SWITCH 结构举例. (ex03_switch.cpp) 3.3 循环结构 • 重复执行: 代码不变, 但数据在变; • 循环结构的三种实现方式: while 循环, do while 循环和 for 循环. • 循环可以嵌套. 3.3.1 WHILE 循环 ✞ ☎ while(条件表达式) { 循环体语句 } ✝ ✆ http://math.ecnu.edu.cn/~jypan 仅供课堂教学使用,请勿外传
3.3循环结构 .23 ·执行过程 ()计算条件表达式的值: (②)如果是“真”,则执行循环体语句:否则退出循环 (3)返回第(①)步 凸注记:如果循环体语句是复合语句,别忘了大括号 例3.4 WHILE循环举例. (ex03_while.cpp) 3.3.2D0WHLE循环 do 循环体语句 )while(条件表达式): ·执行过程 ()执行循环体语句 (2)判断条件表达式的值,如果是“真”,则返回第(①)步否则退出循环 ·与while循环的区别:无论条件是否成立,循环体语句至少执行一次. 3.3.3FOR循环 for(初始语句;表达式1;表达式2) 循环体语句 ·执行过程 (1)执行初始语句: (②)计算表达式1的值,如果是“直”,则执行循环体语句,否则退出循环 (3)执行表达式2,返回第二步. ↑初始语句,表达式1,表达式2均可省略,但分号不能省: ↑表达式1是循环控制语句,如果省略的话就构成死循环 循环体可以是单个语句,也可以是复合语句: ↑初始语句与表达式2可以是逗号语句: 若省略初始语句和表达式2,只有表达式1,则等同于whi1e循环 ·for循环有时也可以描述为 for(循环变量赋初值;循环条件;循环变量增量) http://math.ecnu.edu.cn/-jypan
3.3 循环结构 · 23 · • 执行过程 (1) 计算条件表达式的值; (2) 如果是“真”, 则执行循环体语句; 否则退出循环; (3) 返回第 (1) 步. b 注记:如果循环体语句是复合语句, 别忘了大括号! 例 3.4 WHILE 循环举例. (ex03_while.cpp) 3.3.2 DO WHILE 循环 ✞ ☎ do { 循环体语句 } while(条件表达式); ✝ ✆ • 执行过程 (1) 执行循环体语句; (2) 判断条件表达式的值, 如果是“真”, 则返回第 (1) 步; 否则退出循环. • 与 while 循环的区别: 无论条件是否成立, 循环体语句至少执行一次. 3.3.3 FOR 循环 ✞ ☎ for(初始语句; 表达式1; 表达式2) { 循环体语句 } ✝ ✆ • 执行过程 (1) 执行初始语句; (2) 计算表达式 1 的值, 如果是“真”, 则执行循环体语句, 否则退出循环; (3) 执行表达式 2, 返回第二步. † 初始语句, 表达式 1, 表达式 2 均可省略, 但分号不能省; † 表达式 1 是循环控制语句, 如果省略的话就构成死循环; † 循环体可以是单个语句, 也可以是复合语句; † 初始语句 与 表达式 2 可以是逗号语句; † 若省略初始语句 和 表达式 2, 只有表达式 1, 则等同于 while 循环. • for 循环有时也可以描述为 ✞ ☎ for(循环变量赋初值; 循环条件; 循环变量增量) { http://math.ecnu.edu.cn/~jypan 仅供课堂教学使用,请勿外传
·24 第三讲选抒与循环 循环体语句 int i,s=0; for(1=1;1=1;1+) 3 ss +ij ·循环变量可以在初始语句中声明,这样,循环变量只在该循环内有效,循环结束后,循环变量即被释 放 int s=0; for(inti=1;1<=10;i+) s▣s+i; 图3.1.三种循环示意图 、表达式 循环体 循环体 表达试 WHILE循环 DO WHILE循 3.3.4循环的非正常终止 break/跳出循环体,但只能跳出一层循环,一般用在循环语句和switch语句中 continue/结来本轮循环,执行下一轮循环,一般用在循环语句中, gt0、/跳转语句,不建议使用 白注记:break和continue通常与if语句配合使用. http://math.ecnu.edu.cn/~jypan
· 24 · 第三讲 选择与循环 循环体语句 } ✝ ✆ 1 int i, s=0; 2 for (i=1; i<=10; i++) 3 s = s + i; • 循环变量可以在初始语句中声明, 这样, 循环变量只在该循环内有效, 循环结束后, 循环变量即被释 放. 1 int s=0; 2 for (int i=1; i<=10; i++) 3 s = s + i; 图 3.1. 三种循环示意图 3.3.4 循环的非正常终止 ✞ ☎ break // 跳出循环体, 但只能跳出一层循环, 一般用在循环语句和 switch 语句中. continue // 结束本轮循环, 执行下一轮循环, 一般用在循环语句中. goto // 跳转语句, 不建议使用. ✝ ✆ b 注记: break 和 continue 通常与 if 语句配合使用. http://math.ecnu.edu.cn/~jypan 仅供课堂教学使用,请勿外传