C++ 竞赛入门
运算符
运算符
本节学会什么
- 使用算术、比较、逻辑和复合赋值运算符
- 区分整数除法与取余
- 用括号明确计算顺序
为什么需要它
变量只是保存数据,运算符才让数据发生计算和比较。之后的条件、循环、数组下标和几乎所有 OJ 题目都会反复使用这些基本运算。
最小可运行示例
#include <iostream>
int main() {
int total_minutes;
std::cin >> total_minutes;
int hours = total_minutes / 60;
int minutes = total_minutes % 60;
std::cout << hours << ' ' << minutes << '\n';
return 0;
}
输入 125 时,输出 2 5。/ 得到整数商,% 得到余数。
关键过程与易错点
| 类别 | 运算符 | 例子 |
|---|---|---|
| 算术 | + - * / % |
17 % 5 是 2 |
| 比较 | == != < <= > >= |
a == b 的结果是 bool |
| 逻辑 | `! && | |
| 复合赋值 | += -= *= /= %= |
sum += x 等价于 sum = sum + x |
最容易错的三件事:
=是赋值,==才是比较。- 两个
int相除会丢掉小数部分,例如5 / 2是2。 - 不确定优先级时就加括号。
(a + b) * c比依赖记忆更可靠。
++ 和 -- 会直接修改变量。初学阶段优先写 i += 1,它更容易看出发生了什么。
动手检查
读入一个非负整数秒数,输出它包含的分钟数和剩余秒数。再用 total / 60.0 输出分钟的真实小数值,比较两种除法结果。
立即练习
| 难度 | 题目 | 题解 | 训练目标 |
|---|---|---|---|
| 基础 | 洛谷 P1421:小玉买文具 | 题解 | 使用加、乘、整除完成单位换算。 |
| 巩固 | 洛谷 P5708:三角形面积 | 题解 | 用括号组织公式,处理 double 计算。 |
| 挑战 | 洛谷 P5707:上学迟到 | 题解 | 将向上取整、时间换算和取余组合起来。 |