GESP C++ 1 级 · 知识点

基本运算

一级要求掌握算术、关系、逻辑三类运算符的写法、优先级与常见组合,尤其是整数除法和取模的用法。

对应知识域:基本运算(算术运算、关系运算、逻辑运算)相关真题 4 套

本页为本站原创整理,例题与解析均由本站编写,不取自任何题库原题;考试范围以 CCF 官方公布为准,本平台不是 GESP 官方平台。

考纲要求

  • 掌握算术运算符加、减、乘、除和取模,理解整数除法截断,理解取模只能用于整数、结果是被除数除以除数的余数。
  • 掌握关系运算符大于、小于、大于等于、小于等于、等于、不等于,理解关系运算的结果是布尔值。
  • 掌握逻辑运算符与、或、非,理解它们用于组合多个条件。
  • 理解运算符优先级,知道乘除取模高于加减、关系高于逻辑,不确定时加括号。

典型题型

  • 给出算术表达式,要求写出运算结果,常考整数除法与取模。
  • 给出含逻辑运算的条件表达式,判断整个表达式是真还是假。
  • 用取模运算判断奇偶、求一个整数的个位数字。

常见错误

  • 把赋值符号 = 当成等于比较,条件判断里应使用 ==。
  • 对浮点数使用取模运算符,% 只能用于整数。
  • 误解优先级,写出 a + b > c 却以为是 a + (b > c),实际加法先算。
  • 负数参与取模时想当然,C++ 中 -7 % 3 的结果是 -1 而不是 2。
  • 把逻辑与 && 写成单个 &,两者含义不同。

深入理解

优先级只需要记一条主线

从高到低:括号 → 单目(!、- 取负、++)→ 算术(* / % 高于 + -)→ 关系(< > <= >=)→ 相等(== !=)→ 逻辑与 && → 逻辑或 || → 赋值 =。

记不住时加括号永远是对的,而且更易读。真正需要背的只有两句:算术高于关系,关系高于逻辑。所以 a + 1 > b && c == 0 等价于 (a + 1 > b) && (c == 0)。

整除、取模与负数

/ 的两边都是整数时做整除,小数部分直接截掉(向零取整),不是四舍五入。% 取余,只对整数有意义。两者配合可以拆数:x / 100 得百位,x / 10 % 10 得十位,x % 10 得个位。

负数时符号跟随被除数:-7 / 2 得 -3,-7 % 2 得 -1。判断奇偶时如果可能遇到负数,写 x % 2 != 0 比 x % 2 == 1 更稳妥,因为 -1 也是奇数但不等于 1。

短路求值会改变执行结果

&& 左边为假时,右边根本不会执行;|| 左边为真时,右边也不会执行。这叫短路求值,既是效率优化,也是安全问题:if (n != 0 && sum / n > 10) 靠短路避免了除以零。如果把两个条件颠倒过来,程序就会崩。

i++ 与 ++i 单独使用时没区别;混在表达式里时,i++ 先取值再自增,++i 先自增再取值。一级题目里出现 cout << i++ 和 cout << ++i,考的就是这一点。

自编例题

拆出三位数的各位数字

读入一个三位整数,分别输出它的百位、十位和个位。

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    int hundreds = n / 100;
    int tens = n / 10 % 10;
    int units = n % 10;
    cout << hundreds << " " << tens << " " << units << endl;
    return 0;
}

个位用 n % 10 直接取得;百位用 n / 100,因为整数除法会截断后面的位;十位先 n / 10 把个位截掉,再对 10 取模。以 472 为例:472 / 100 得 4,472 / 10 得 47,47 % 10 得 7,472 % 10 得 2。这里同时用到了整数除法和取模,两者配合是处理数位的通用套路。

相关真题

这块内容在整条路线里的位置:GESP C++ 1 级备考路径。

READY TO START

开始练习

先做一套本级别测评,报告会指出哪些知识点需要重点补;再回到本页对照考纲要求逐条核对,把不确定的条目记下来集中练。

常见问题

取模运算符可以用于小数吗?

不可以。% 的两个操作数都必须是整数,对浮点数使用会编译报错。若要取小数部分的余数,需要借助数学函数换算。

怎么判断一个数是奇数还是偶数?

用 n % 2 判断:结果为 0 是偶数,结果为 1 是奇数。取模得到的是除以 2 的余数,这个技巧在循环里筛选数字时很常用。

a + b > c 是先算加法还是先比较?

先算加法。算术运算符的优先级高于关系运算符,所以这个表达式等价于 (a + b) > c。优先级记不清时,加括号是最稳妥的写法。

本级别其他知识点

官方依据