附录 A 一级知识速查表
- 计算机基础速查
- 类别:输入设备
- 作用:把外界信息送入计算机
- 常见例子:键盘、鼠标、麦克风、摄像头、传感器
- 类别:输出设备
- 作用:把计算机处理结果展示出来
- 常见例子:显示器、音箱、打印机、投影仪
- 类别:存储设备
- 作用:保存程序和数据
- 常见例子:内存、硬盘、U 盘
- 类别:处理器
- 作用:执行计算和控制
- 常见例子:CPU
- 类别:操作系统
- 作用:管理计算机资源
- 常见例子:Windows、Linux、macOS、Android、鸿蒙
-
类别:应用软件
- 作用:完成具体任务
- 常见例子:浏览器、地图软件、会议软件、编程环境
-
编程环境速查
- 操作:创建文件
- 含义:新建一个源代码文件
- 操作:编辑文件
- 含义:输入、修改、删除代码
- 操作:保存文件
- 含义:把当前代码写入文件
- 操作:编译程序
- 含义:检查语法并生成可执行程序
- 操作:运行程序
- 含义:执行程序并得到结果
- 操作:调试程序
- 含义:查找错误、观察变量和执行过程
- 操作:断点
- 含义:让程序运行到指定位置附近暂停
- 操作:单步执行
- 含义:一行一行执行程序
常见文件扩展名:
- 类型:C++ 源文件 | 扩展名:.cpp
- 类型:文本文件 | 扩展名:.txt
- 类型:图片文件 | 扩展名:.jpg、.png
- 类型:压缩文件 | 扩展名:.zip
- C++ 程序基本结构速查
cpp 275 #include <bits/stdc++.h> using namespace std; int main() { // 程序主体 return 0; }常见说明: - 代码:
#include <bits/stdc++.h>| 作用:引入常用头文件 - 代码:
using namespace std;| 作用:允许直接使用 cin、cout 等 - 代码:
int main()| 作用:程序入口 - 代码:
{}| 作用:表示语句块 - 代码:
return 0;| 作用:程序正常结束
一级阶段也常见:
cpp
#include <iostream>
using namespace std;
int main() {
cout << "Hello";
return 0;
}
- 输出语句速查
### 4.1 cout
| 代码 | 输出 |
| :--- | :--- |
|
cout << "Hello";| Hello | |cout << 3 + 4;| 7 | |cout << "3+4";| 3+4 | |cout << "A" << "B";| AB | |cout << "A" << endl << "B";| A 和 B 分两行 |
示例:
- int a = 3, b = 4; cout << "a+b=" << a + b;
- 输出:276 a+b=7 (注:数字276为排版页码,下同)
- int a = 3, b = 4; cout << a << "+" << b << "=" << a + b;
- 输出:3+4=7
### 4.2 printf
| 代码 | 输出 |
| :--- | :--- |
| printf("Hello"); | Hello |
| printf("%d", 10); | 10 |
| printf("%%"); | % |
| printf("%2d", 5); | 5 (含空格或宽度为2) |
| printf("%02d", 5); | 05 |
| printf("%.2f", 3.14159); | 3.14 |
示例:
- printf("5%%2=%d", 5 % 2);
- 输出:5%2=1
- 输入语句速查 ### 5.1 cin
int n; cin >> n;- 连续读入:
int a, b; cin >> a >> b; - 输入:
10 20或:277 10 20都可以读到a = 10,b = 20。
### 5.2 scanf
- int n; scanf("%d", &n);
- 连续读入:int a, b; scanf("%d%d", &a, &b);
常见格式:
- 格式:%d | 含义:读入整数
- 格式:%f | 含义:读入 float
- 格式:%lf | 含义:读入 double
- 格式:%c | 含义:读入字符
### 5.3 输入易错点 | 输入内容 | 变量类型 | 通常读到 | | :--- | :--- | :--- | | 5+2 | int | 5 | | 3.14 | int | 3 | | 10 | char | '1' | | A | char | 'A' |
- 数据类型速查
| 类型 | 含义 | 示例 |
| :--- | :--- | :--- |
| int | 整数 |
int n = 10;| | long long | 更大范围整数 |long long x = 10000000000;| | float | 小数 |float x = 3.14;| | double | 小数,常用 |double pi = 3.1415926;| | char | 一个字符 |char ch = 'A';| | bool | 真或假 |bool ok = true;|
常量速查:
- 写法:10 | 类型理解:整数常量
- 写法:3.14 | 类型理解:小数常量
- 写法:'A' | 类型理解:字符常量
- 写法:'3' | 类型理解:字符常量
- 写法:"A" | 类型理解:字符串常量
- 写法:"Hello" | 类型理解:字符串常量
- 写法:true | 类型理解:布尔真
- 写法:false | 类型理解:布尔假
- 标识符速查 合法变量名规则:
- 规则:可以包含字母 | 说明:如 abc
- 规则:可以包含数字 | 说明:如 abc1
- 规则:可以包含下划线 | 说明:如 abc_1
- 规则:不能以数字开头 | 说明:
1abc不合法 - 规则:不能包含空格 | 说明:
red star不合法 - 规则:不能包含减号 | 说明:
red‐star不合法 - 规则:不能是关键字 | 说明:
for不合法 - 规则:区分大小写 | 说明:
Name和name不同
合法示例:
int a; int abc1; int _abc; int red_star; int redStar;
非法示例:
int 1abc; int red star; int red‐star; int a+b; int for;
常见关键字:
int long float 279 double char bool if else for while do switch case break continue return
- 算术运算速查 | 运算 | 符号 | 示例 | 结果 | | :--- | :--- | :--- | :--- | | 加法 | + | 3 + 4 | 7 | | 减法 | ‐ | 10 ‐ 6 | 4 | | 乘法 | * | 3 * 5 | 15 | | 整数除法 | / | 7 / 2 | 3 | | 取余 | % | 7 % 2 | 1 |
常见结论:
- 表达式:n % 2 == 0 | 含义:n 是偶数
- 表达式:n % 2 == 1(正整数) | 含义:n 是奇数
- 表达式:n % k == 0 | 含义:n 能被 k 整除
- 表达式:n % k == r | 含义:n 除以 k 余 r
- 表达式:n % 10 | 含义:取个位
- 表达式:n / 10 | 含义:去掉个位
运算优先级: 括号 > 乘除取余 > 加减 > 关系运算 > 逻辑运算 > 赋值 常用记法: 括号先算,乘除取余先于加减,同级从左到右。 280
- 赋值与自增速查
| 写法 | 等价理解 |
| :--- | :--- |
|
a = b;| 把 b 的值赋给 a | |a += b;|a = a + b;| |a ‐= b;|a = a ‐ b;| |a *= b;|a = a * b;| |a /= b;|a = a / b;| |a %= b;|a = a % b;| |a++;|a = a + 1;| |a‐‐;|a = a ‐ 1;|
示例:
cpp
int a = 10;
a %= 6;
cout << a;
输出:4
前置与后置:
| 代码 | 含义 |
| :--- | :--- |
| ++a | 先加一,再使用 |
| a++ | 先使用,再加一 |
| ‐‐a | 先减一,再使用 |
| a‐‐ | 先使用,再减一 |
-
关系运算速查 | 运算符 | 含义 | | :--- | :--- | |
>| 大于 | |>=| 大于等于 | |<| 小于 | |<=| 小于等于 | |==| 等于 | |!=| 不等于 |注意: -
a = 10;281 表示赋值。 -a == 10;表示判断 a 是否等于 10。 - 关系表达式成立时结果为 1,不成立时结果为 0。示例:
cout << (6 > 2) * 2;输出:2(因为6 > 2成立,值为 1。) -
逻辑运算速查 | 运算符 | 含义 | 说明 | | :--- | :--- | :--- | |
&&| 并且 | 两边都成立才成立 | |\|\|| 或者 | 至少一边成立就成立 | |!| 非 | 真变假,假变真 |常见表达式: - 题意:n 是偶数且能被 3 整除 | 表达式:
n % 2 == 0 && n % 3 == 0- 题意:n 能被 3 或 7 整除 | 表达式:n % 3 == 0 || n % 7 == 0- 题意:n 不是 0 | 表达式:n != 0- 题意:n 在 1 到 100 之间 | 表达式:n >= 1 && n <= 100- 题意:a 和 b 都为 0 | 表达式:a == 0 && b == 0条件中: -
0含义:假 - 非0含义:真示例:
cout << !0;输出:1282cout << !5;输出:0 -
分支结构速查 ### 12.1 if
cpp if (条件) 语句;### 12.2 if‐elsecpp if (条件) 语句1; else 语句2;### 12.3 else ifcpp if (条件1) 语句1; else if (条件2) 语句2; else 语句3;执行特点:- 从上到下判断;
- 某个条件成立后,执行对应分支;
- 执行一个分支后,后面的
else if不再判断。
12.4 大括号
没有大括号时,if 只控制紧跟着的一条语句。
cpp if (n > 0) cout << "A"; cout << "B";输入-1时输出:B28312.5 switch
cpp switch (x) { case 1: cout << "A"; break; case 2: cout << "B"; break; default: cout << "C"; break; }注意: - case 匹配后开始执行; - break 用于跳出 switch; - 如果没有 break,可能继续执行后面的 case。 -
循环结构速查 ### 13.1 for
cpp for (初始化; 条件; 更新) 循环体;示例:for (int i = 1; i <= 5; i++) cout << i << " ";输出:1 2 3 4 513.2 while
cpp while (条件) 循环体;示例:cpp int i = 1; while (i <= 5) { cout << i << " "; i++; }28413.3 do‐while
cpp do { 循环体; } while (条件);特点: 循环体至少执行一次。13.4 break
break;作用: 提前结束当前循环。 示例:cpp for (int i = 1; i <= 5; i++) { if (i == 3) break; cout << i; }输出:1213.5 continue
continue;作用: 跳过本轮后续语句,进入下一轮。 示例:cpp for (int i = 1; i <= 5; i++) { if (i == 3) continue; cout << i; }输出:285 1245(原书排版连排) -
常见循环模型速查 ### 14.1 输出 1 到 𝑛
for (int i = 1; i <= n; i++) cout << i << " ";### 14.2 求 1 到 𝑛 的和cpp int sum = 0; for (int i = 1; i <= n; i++) sum += i;### 14.3 统计满足条件的个数cpp int cnt = 0; for (int i = 1; i <= n; i++) if (条件) cnt++;### 14.4 输入 𝑛 个数并统计cpp int cnt = 0; for (int i = 1; i <= n; i++) { int x; cin >> x; if (条件) cnt++; }### 14.5 枚举因数for (int i = 1; i <= n; i++) if (n % i == 0) cout << i << " ";### 14.6 朴素质数判断cpp int cnt = 0; for (int i = 1; i <= n; i++) if (n % i == 0) cnt++; if (cnt == 2) cout << "Y";286else cout << "N"; -
数位处理速查 ### 15.1 基本操作
- 取个位:
n % 10 - 去掉个位:
n /= 10 - 判断当前个位是奇数:
n % 10 % 2 == 1 - 判断当前个位是偶数:
n % 10 % 2 == 0
15.2 求数位和
cpp int sum = 0; while (n != 0) { sum += n % 10; n /= 10; }15.3 统计奇数位个数
cpp int cnt = 0; while (n != 0) { if (n % 10 % 2 == 1) cnt++; n /= 10; }15.4 统计偶数位个数
cpp int cnt = 0; while (n != 0) { if (n % 10 % 2 == 0) cnt++; n /= 10; }15.5 反转数字
cpp int rst = 0; while (n != 0) { rst = rst * 10 + n % 10; n /= 10; }28715.6 取第 𝑚 位数字
个位为第 1 位,十位为第 2 位。
cpp int div = 1; for (int i = 1; i < m; i++) div *= 10; cout << n / div % 10; - 取个位:
-
常见完整程序模板 ### 16.1 奇偶判断
cpp #include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; if (n % 2 == 0) cout << "even"; else cout << "odd"; return 0; }### 16.2 求数位和cpp #include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; int sum = 0; while (n != 0) { sum += n % 10; n /= 10; } cout << sum; return 0; }### 16.3 统计 𝑛 个整数中的奇数个数 288cpp #include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; int cnt = 0; for (int i = 1; i <= n; i++) { int x; cin >> x; if (x % 2 != 0) cnt++; } cout << cnt; return 0; }### 16.4 输出所有因数cpp #include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; for (int i = 1; i <= n; i++) if (n % i == 0) cout << i << " "; return 0; }### 16.5 连续输入求最大最小值cpp #include <bits/stdc++.h> using namespace std; int main() { int x; cin >> x; int mx = x, mn = x; while (x != ‐999) { if (x > mx) mx = x; if (x < mn) mn = x; 289 cin >> x; } cout << mx << " " << mn; return 0; } -
易错代码对照表 | 错误写法 | 问题 | 正确写法 | | :--- | :--- | :--- | |
cin >> &n;| cin 不写 & |cin >> n;| |scanf("%d", n);| scanf 少了 & |scanf("%d", &n);| |if (n = 0)| 赋值,不是判断 |if (n == 0)| |a ^ 2| ^ 不是平方 |a * a| |int 1abc;| 变量名不能数字开头 |int abc1;| |int red‐star;| 不能包含减号 |int red_star;| |cout << "a+b";| 不会计算加法 |cout << a + b;| |while (n != 0) sum += n % 10;| n 不变,死循环 | 加上n /= 10;| |for (int i = 1; i < n; i++)| 不包含 n |for (int i = 1; i <= n; i++)| | continue 后还想输出 | 本轮后续语句不会执行 | 把输出写在 continue 前或调整条件 | -
考前一分钟速记
- 输入设备:键盘、鼠标、麦克风、摄像头、传感器。
- 输出设备:显示器、音箱、打印机。
- 操作系统:Windows、Linux、鸿蒙。
- 变量名:字母、数字、下划线;不能数字开头;不能是关键字;区分大小写。
- 输出:双引号内原样输出,双引号外计算。
- printf:
%d输出整数,%%输出百分号。 - 输入:cin 不加 &,scanf 通常加 &。
- int 输入
5+2通常读到5。 - 整数除法舍小数,
%是取余。 - 偶数:
n % 2 == 0。 - 整除:
n % k == 0。 - 个位:
n % 10。 - 去个位:
n /= 10。 - 判断相等用
==,赋值用=。 - 且用
&&,或用||,非用!。 290 - break 结束循环。
- continue 跳过本轮。
- do‐while 至少执行一次。
-
本附录要点 一级知识点不多,但符号细节密集。复习时不要只背代码,要知道每个符号的作用。
=和==、/和%、&&和||、break和continue、双引号内和双引号外,是一级最容易混淆的几组内容。做程序阅读题时,按执行顺序一步一步跟踪变量。做编程题时,先确定输入、处理、输出,再选择分支或循环模型。数位题牢记
n % 10和n /= 10,循环题牢记初值、条件、更新和大括号范围。把这张速查表看熟,再配合前面的模拟卷和练习题,一级考试中大部分基础题都能稳定处理。
—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com