一、引言:计算机的“判断力”
计算机的“判断”本质是条件执行:通过关系运算符比较数据,用条件语句(if-else)决定代码的执行路径。
-
核心目标:让程序在不同情况下做出不同反应。
-
生活类比:
-
购票系统:身高 >1.3米 → 需购票,否则免票。
-
旅行团收费:人数越多 → 单价越低。
-
二、关系运算符:计算机的“比较工具”
1. 运算符列表
| 运算符 | 含义 | 示例 | 返回值(布尔值) |
|---|---|---|---|
> | 大于 | 5 > 3 | true(1) |
< | 小于 | 3 < 9 | true(1) |
>= | 大于等于 | a >= 10 | 依变量值而定 |
<= | 小于等于 | h <= 1.2 | 依变量值而定 |
== | 相等 | a == b | 若相等则为1 |
!= | 不相等 | num != 0 | 若不相等则为1 |
2. 关键区别:C++ vs 数学
-
运算符符号:C++用
==表示相等(数学用=),=在C++中是赋值。int a = 5; if (a == 5) { // 正确:比较a是否等于5 cout << "a是5"; } -
返回值类型:关系表达式返回布尔值(
true或false,存储为1或0)。cout << (5 > 3); // 输出1(true) cout << (3 == 9); // 输出0(false)
三、条件语句:让程序“做选择”
1. if 结构:单分支选择
-
语法:
if (条件表达式) { // 条件成立时执行 } -
示例:输入学生升高,超过1.3就需要购票
double h; cin >> h; if (h > 1.3) { cout << "需要购票"; }
2. if-else 结构:双分支选择
-
语法:
if (条件表达式) { // 条件成立时执行 } else { // 条件不成立时执行 } -
示例:如果一个两位数,它的十位数字与个位数字的乘积加上十位数字与个位数字之和恰好等于原数字,则这样的两位数称为奇妙数。 例如:39 = (3×9)+(3+9),所以39就是一个奇妙数。 编写一段程序,请用户输入一个两位数,判断下这个数字是否为奇妙数。
int num, a, b; cin >> num; a = num / 10; // 十位 b = num % 10; // 个位 if (num == a*b + a + b) { cout << "这是一个奇妙数"; } else { cout << "这不是一个奇妙数"; }
3. 多分支选择:else if
-
语法:
if (条件1) { ... } else if (条件2) { ... } else { ... } -
示例:旅行团收费,如果5人或5人以下,每人500元/日;如果5人以上30人以下,每人460元/日;如果30人以上,每人420元/日
int a; cin >> a; if (a <= 5) { cout << "500每日"; } else if (a <= 30) { cout << "460每日"; } else { cout << "420每日"; }
四、三目运算符:简洁的条件赋值
1. 语法:条件 ? 表达式1 : 表达式2
-
作用:若条件成立,返回表达式1的值;否则返回表达式2的值。
-
示例:身高1.2以下是半价票,身高1.2以上是全价票
double h; cin >> h; h <= 1.2 ? cout << "半价票" : cout << "全价票";
2. 适用场景:简单的二选一赋值,替代短小的if-else。
五、实战案例解析
1. 案例:行李收费
-
问题:行李重量≤20公斤按1.68元/公斤收费,否则按1.98元/公斤,(结果要保留小数点后两位)。
-
代码:
int weight; double money; cin >> weight; if (weight <= 20) { money = weight * 1.68; } else { money = weight * 1.98; } cout << fixed << setprecision(2) << money; -
注意点:
-
使用
setprecision(2)保留两位小数(需头文件<iomanip>)。 -
变量命名清晰(如
weight代替无意义的a)。
-
2. 案例:找出最大数
-
问题:输入三个数,输出最大值。
-
代码:
int a, b, c; cin >> a >> b >> c; if (a < b) a = b; // 更新a为当前较大值 if (a < c) a = c; // 再次比较 cout << "最大的数是:" << a;
-
实现思路:通过逐步比较更新变量
a的值。
六、常见错误与规范
-
混淆
=和==:if (a = 5) { ... } // 错误!将5赋值给a,条件永远为真 -
缺少花括号:
if (weight <= 20) money = weight * 1.68; // 仅这一行属于if cout << money; // 无论条件如何都会执行!
七、总结与练习
1. 总结:
-
关系运算符用于比较,返回布尔值。
-
if-else控制代码分支,可多层嵌套。 -
三目运算符简化简单条件赋值。
2. 练习:
-
将购票案例改写为三目运算符形式。
-
设计一个程序,判断用户输入的年份是否为闰年。
1486

被折叠的 条评论
为什么被折叠?



