分支结构(if 与逻辑运算)

一句话目标:让程序学会”看情况办事” —— 满足条件走一条路,不满足走另一条。

生活类比:妈妈让小明去超市,“如果有西瓜就买一个回来,否则直接回家”。这就是分支。


第一部分:关系(比较)运算符

分支的”条件”,靠关系运算符算出真(true)假(false)

运算符含义举例结果
>大于5 > 3true
>=大于等于3 >= 3true
<小于3 < 5true
<=小于等于5 <= 3false
==等于5 == 5true
!=不等于2 != 2false

⚠️ 最致命的坑:判断相等用 ==(两个等号),不是 =
= 是赋值,if (a = 5) 会把 5 赋给 a 而不是比较,几乎必错。


第二部分:if / else

if (条件成立) {
    // 条件为真时执行这里
} else {
    // 否则执行这里
}

例 1:输入数学成绩,90 分及以上输出 “A”。

int n;
cin >> n;
if (n >= 90) {
    cout << "A";
}
  • 条件必须用圆括号括起来。
  • if 后只有一条语句时,花括号可省略;但初学建议都写上,不易出错。

第三部分:多分支 if / else if / else

例 2:90 及以上输出 “A”,80 及以上输出 “B”,其他输出 “C”。

int n;
cin >> n;
if (n >= 90) {
    cout << "A";
} else if (n >= 80) {
    cout << "B";
} else {
    cout << "C";
}

关键:条件从上往下逐个判断,命中一个就不再看后面
所以写 else if (n >= 80) 时,能走到这里就说明 n 一定 < 90,不用再写 n < 90


第四部分:逻辑运算符

把多个条件组合起来:

运算符别名含义何时为 true
&&and两个都为 true
||or至少一个为 true
!not把 true/false 反转
// 语文 > 90 并且 数学 > 90
if (chinese > 90 && math > 90) {
    cout << "双优";
}

第五部分:运算符优先级

一个表达式里多种运算符,谁先算?(从高到低)

优先级运算符
最高括号 ( )
乘除取余 * / %
加减 + -
比较 > >= < <=
相等 == !=
逻辑 && ||

拿不准就加括号——既不会错,也更易读。


第六部分:三目(条件)运算符

一种更短的写法,常用于赋值:

表达式1 ? 表达式2 : 表达式3

如果表达式1为真,整个式子取表达式2,否则取表达式3。

int big = (a > b) ? a : b;   // 取 a、b 中较大者

经典例题:判断闰年

闰年规则:能被 4 整除不能被 100 整除;或者能被 400 整除。

int y;
cin >> y;
if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) {
    cout << "闰年";
} else {
    cout << "平年";
}

这道题把取余 %关系 ==/!=逻辑 && ||括号优先级全用上了,是分支的集大成练习。


小结

  • 关系运算符产出真/假;判断相等是 ==,别写成 =
  • if / else if / else 从上往下判断,命中即止。
  • 逻辑运算符 && || ! 组合条件;拿不准优先级就加括号。
  • 三目 ? : 是简洁的赋值分支。

课后小练

  1. 输入三个数,输出最大的(提示:if 嵌套或三目)。
  2. 输入一个年份,判断是否闰年(洛谷 P5713)。
  3. 多分支作业:洛谷 P5711、P5712。