C+语言程序设计 第三讲选择与循环 潘建瑜@MATH.ECNU
1 第三讲 选择与循环 C++ 语言程序设计 潘建瑜@MATH.ECNU
关系运算与逻辑运算 口关系运算(比较大小) 口逻辑运算 口条件运算符 http://math.ecnu.edu.cn/-jypan
http://math.ecnu.edu.cn/~jypan 1 关系运算与逻辑运算 关系运算(比较大小) 逻辑运算 条件运算符
关系运算:比较大小 > 大于 = 大于等于 = 小于等于 1= 不等于 比较大小,结论是真则返回true, 否则返回false C++中用1表示true,0表示false bool型变量,赋值0时表示false,其他它值都表示true b001×1=1.5; /x1=true b0o1x2=0; /x2=false b001x3=-11; /x3=true ex03_bool_02.cpp 注意==与=的区别;对浮点数进行比较运算时尽量不要使用== 4 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 关系运算:比较大小 4 > 大于 = 大于等于 <= 小于等于 != 不等于 ► 比较大小,结论是 真 则返回 true ,否则返回 false ► C++ 中用 1 表示 true,0 表示 false ► bool 型变量,赋值 0 时表示 false,其他它值都表示 true bool x1=1.5; // x1=true bool x2=0; // x2=false bool x3=-11; // x3=true ex03_bool_02.cpp 注意 == 与 = 的区别;对浮点数进行比较运算时尽量不要使用 ==
逻辑运算 && 逻辑与 11 逻辑或 逻辑非 口运算法则 运算对象 与 或 非 A B A&&B AllB IA 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 1 1 0 5 http://math.ecnu.edu.cn/-jypan
http://math.ecnu.edu.cn/~jypan 逻辑运算 5 && 逻辑与 || 逻辑或 ! 逻辑非 运算对象 与 或 非 A B A&&B A||B !A 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 1 1 0 运算法则
逻辑运算:两点注意 (表达式1)&&(表达式2) 先计算表达式1的值,若是true,则计算表达式2的值; 若表达式1的值是false,则不再计算表达式2的值。 (表达式1)川川(表达式2) 先计算表达式1的值,若是false,则计算表达式2的值; 若表达式1的值是true,则不再计算表达式2的值 1=3;(1>3)&(i+) 1=3 i=3;(i>3)1川(i+); i=? 6 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 逻辑运算:两点注意 6 (表达式1) && (表达式2) 先计算 表达式1 的值,若是 true,则计算 表达式2 的值; 若 表达式1 的值是 false,则不再计算 表达式2 的值。 i=? i=3; (i>3) && (i++); i=3 i=3; (i>3) || (i++); (表达式1) || (表达式2) 先计算 表达式1 的值,若是 false,则计算 表达式2 的值; 若 表达式1 的值是 true,则不再计算 表达式2 的值
条件运算符 条件表达式?表达式1:表达式2 先计算条件表达式的值,若是true,则用表达式1作为整个表达式的值, 否则就用表达式2的值作为整个表达式的值 =x>0?1:-1; x>y x yj 条件运算符是C++中唯一的三目运算符 7 http://math.ecnu.edu.cn/-jypan
http://math.ecnu.edu.cn/~jypan 条件运算符 7 条件表达式 ? 表达式1 : 表达式2 ► 先计算 条件表达式 的值,若是 true,则用 表达式1 作为整个表达式的值, 否则就用 表达式2 的值作为整个表达式的值 z = x>0 ? 1 : -1; z = x>y ? x : y; 条件运算符是 C++ 中唯一的三目运算符
举例 #include using namespace std; int main() { int×1=1,x2=2,x3=3; bool b1,b2,b3; b1=(x1x2>x1; /1有没有问题? cout<"b3="<b3<"\n"; return 0; 8 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 举例 8 #include using namespace std; int main() { int x1=1, x2=2, x3=3; bool b1, b2, b3; b1 = (x1 x2 > x1; // 有没有问题? cout << "b3=" << b3 << " \n"; return 0; }
2 选择结构 口F语句:单分支、双分支、多分支、嵌套 ▣SWITCH语句 http://math.ecnu.edu.cn/-jypan
http://math.ecnu.edu.cn/~jypan 2 选择结构 IF 语句:单分支、双分支、多分支、嵌套 SWITCH 语句
IF语句:单分支 用法一:单分支 f(表达式) 语句块 if (x>y) cout y) if (x>y) t xj t xj ×=y5 x =y; y=t; y=t; ex03_if_01.cpp 10 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan IF 语句:单分支 10 if (x>y) { t = x; x = y; y = t; } if (x>y) t = x; x = y; y = t; 用法一:单分支 if (表达式) 语句块 if (x>y) cout << x; 这里的语句块可以是单个语句或复合语句(即多个语句用大括号括起来) ex03_if_01.cpp
F语句:双分支 用法二:双分支 f(表达式) 语句块 ex03_if_02.cpp else if (x>y) cout <x; 语句块 else cout <y; 注意:条件判断表达式两边的小括号不能省略! 11 http://math.ecnu.edu.cn/-jypan
http://math.ecnu.edu.cn/~jypan IF 语句:双分支 11 用法二:双分支 注意:条件判断表达式两边的小括号不能省略! if (表达式) 语句块 else 语句块 if (x>y) cout << x; else cout << y; ex03_if_02.cpp