分支结构¶
分支结构,也称选择结构。根据条件,决定执行哪一部分代码。
if 语句¶
条件成立,就执行大括号里的语句;不成立,就跳过。
输入正数,就输出“正数”;输入零或负数,这段代码就不输出。
else 语句¶
两条分支,只会执行其中一条。else 后面不用写条件。
判断 x 是否为完全平方数
这里先处理 0 <= x <= 1000000000 的整数。
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int x;
cin >> x;
int t = sqrt(x); // 开平方,再转成int,舍去小数部分
if (t * t == x) {
cout << "Yes";
}
else {
cout << "No";
}
return 0;
}
例如,x = 17,开平方约为 4.123,存进 int 后得到 4。
4 的平方是 16,不等于 17,所以 17 不是完全平方数。
判断 n 是否为闰年
四年一闰,百年不闰,四百年再闰。
也就是:能被 4 整除但不能被 100 整除,或者能被 400 整除。
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
if ((n % 4 == 0 && n % 100 != 0) || n % 400 == 0) {
cout << 'Y';
}
else {
cout << 'N';
}
return 0;
}
&& 表示“并且”,|| 表示“或者”,后面会单独讲。
2000 年是闰年,1900 年不是,2024 年是。
else if 语句¶
if (条件表达式1) {
// ...
}
else if (条件表达式2) {
// ...
}
else if (条件表达式3) {
// ...
}
else {
// 最后漏到这里,接住
}
从上往下判断,遇到第一个成立的条件,就执行对应分支,后面的分支不再判断。
前面都不成立,才执行最后的 else。不需要兜底时,也可以不写 else。
判断正数、负数、零
int x;
cin >> x;
if (x > 0) {
cout << "正数";
}
else if (x < 0) {
cout << "负数";
}
else {
cout << "零";
}
注意:几个独立的 if,会分别判断;连在一起的 if、else if、else,只执行其中一条分支。
分支嵌套¶
分支结构里面,还可以再放分支结构,叫作分支嵌套。
先判断外层条件,进入对应分支后,再判断里面的条件。
注意缩进。
外面一层,里面一层,要能一眼看清楚。
常见错误¶
if 后面,不要随手加分号
大括号放在同一行,也一样是错的:
大括号,不要随手省略
不写大括号,if 或 else 只控制紧接着的一条语句。
刚开始,统一把大括号写完整。
没有大括号分组时,else 与前面最近的、尚未配对的 if 配对,不能只看缩进。
else 后面,不写 ()
else 表示前面的条件不成立,不需要再写条件。
如果还要判断条件,就写 else if (条件表达式)。
判断相等,用 ==
= 是赋值,== 才是判断相等,别写混了。