GESP 一级 第 05 讲:算术运算——整除与求余

本讲定位一级编程题的发动机。加减乘除人人会,但 /(整除)和 %(求余)这两个运算,几乎每一道一级编程题都会用到——判断奇偶、取出数字的某一位、判断能否整除、时间与单位换算,全靠它们。同时,运算优先级和 ++ / -- 是客观题的固定考点。这一讲是一级第 01–04 讲的第一次收割,也是第 07、08 讲的必备前提。

对应官方大纲:一级知识块 6「基本运算」中的算术运算变量自增自减运算。(逻辑运算、关系运算、三目运算见一级第 06 讲。)

前置知识:一级第 02 讲(输入输出、赋值)、第 04 讲(整数与浮点的区别)。

代码说明:本讲所有代码均已用 g++ 11.5(-std=c++11)编译运行验证,输出结果即为文中标注结果。


1. 先看一道真题

输入一个三位数,分别输出它的百位、十位、个位数字,用空格分隔。

样例输入375  样例输出3 7 5

这道题不需要任何算法,但没学过 /% 的学生会彻底卡住——他们想不出怎么”把数字拆开”。

学完本讲,答案只有三行:

int n;
cin >> n;
cout << n / 100 << " " << n / 10 % 10 << " " << n % 10 << endl;

拆数位是一级到三级的万能工具,本讲会把它讲透。


2. 五个算术运算符

运算符 名称 例子 结果
+ 7 + 3 10
- 7 - 3 4
* 7 * 3 21
/ (整数间是整除 7 / 3 2
% 求余(取模) 7 % 3 1

⚠️ 乘号必须写 *,不能省略也不能写 × 数学里的 $2a$ 在 C++ 里必须写成 2 * a


3. 除法 /:整除是一级最大的坑

3.1 两条规则

规则一:两个整数相除,结果还是整数,小数部分直接砍掉。规则二:只要有一边是小数,就按小数算。

#include<iostream>
using namespace std;

int main() {
    cout << 7 / 3 << endl;
    cout << 7.0 / 3 << endl;
    cout << 7 / 3.0 << endl;
    cout << 1 / 2 << endl;
    return 0;
}

输出:

2
2.33333
2.33333
0