GESP 二级编程能力认证讲义
第一模块:计算机基础(存储、网络、语言与流程图)
1. 知识点拆解
- 存储单位:计算机最小单位是比特(bit,0或1),最小存储单元是字节(Byte)。
- $1 Byte = 8 bits$
- $1 KB = 1024 B, 1 MB = 1024 KB, 1 GB = 1024 MB$
- 网络常识:IP地址(如
192.168.1.1)、WWW(万维网)、HTTP协议。 - 语言特点:C++ 是编译型语言(运行前需整体翻译成机器码,效率高);Python 是解释型语言(逐行执行)。
- 流程图:
- 椭圆:开始/结束。
- 矩形:执行步骤/处理。
- 菱形:判断条件。
- 平行四边形:输入/输出。
2. 具体例子
例子 1.1:如果一个文件大小为 2MB,那么它由多少个字节(Byte)组成? 计算:$2 \times 1024 \times 1024 = 2,097,152$ 字节。
3. 练习巩固
- 【简单】单选题:在流程图中,用于表示“判断或分支”的图形是( )。 A. 矩形 B. 菱形 C. 平行四边形 D. 椭圆
- 【中等】对错题:C++ 是一种解释型语言,代码编写后不需要编译即可直接在操作系统上运行。( )
- 【困难】填空题:某视频文件大小为 0.5GB,如果每秒下载 10MB,理论上下载完该文件需要 ______ 秒。(结果取整数)
第二模块:数据类型转换与 ASCII 编码
1. 知识点拆解
- ASCII 码:
'0'-'9':48 - 57'A'-'Z':65 - 90'a'-'z':97 - 122- 技巧:大小写字母转换,
小写 = 大写 + 32。
- 类型转换:
- 隐式转换:
int a = 3.14;(a 变为 3,小数丢失)。 - 强制转换:
(double)5 / 2结果为 2.5;而5 / 2结果为 2。
- 隐式转换:
2. 具体例子
例子 2.1:将小写字母转换为大写字母。
char low = 'b';
char up = low - 32;
cout << up; // 输出 'B'
3. 练习巩固
- 【简单】单选题:字符 'D' 的 ASCII 码是 68,则字符 'G' 的 ASCII 码是( )。 A. 70 B. 71 C. 72 D. 73
- 【中等】填空题:执行语句
cout << (int)(3.9 + 5 / 2);输出的结果是 ______。 - 【困难】阅读程序填空:输入一个大写字母,输出它在字母表中的序号(A是1,B是2...)。
cpp char c; cin >> c; cout << _________ ; // 填入表达式
第三模块:多层分支与循环嵌套
1. 知识点拆解
- 分支嵌套:在
if里面再写if,用于处理多级前提条件。 - 循环嵌套:外层循环执行一次,内层循环执行一整套。常用于处理表格或图形。
- 注意点:内外层循环变量名严禁相同(例如都用
i会导致逻辑崩溃)。
2. 具体例子
例子 3.1:打印一个 3行4列 的星号矩形。
for (int i = 1; i <= 3; i++) { // 控制行数
for (int j = 1; j <= 4; j++) { // 控制列数
cout << "*";
}
cout << endl; // 换行
}
3. 练习巩固
- 【简单】阅读程序写结果:
cpp int cnt = 0; for (int i = 1; i <= 3; i++) for (int j = 1; j <= 2; j++) cnt++; cout << cnt;输出:____ - 【中等】单选题:要实现输出“九九乘法表”,最合适的结构是( )。 A. 单层 for 循环 B. 双层 for 循环嵌套 C. if-else 嵌套 D. while 循环
- 【困难】阅读程序写结果(逻辑陷阱):
cpp int sum = 0; for (int i = 1; i <= 5; i++) { if (i % 2 == 0) continue; for (int j = 1; j <= i; j++) { sum += 1; } } cout << sum;输出:____
第四模块:常用数学函数
1. 知识点拆解
- 准备工作:必须包含头文件
#include <cmath>。 - 核心函数:
abs(x):求整数绝对值;fabs(x)求浮点数绝对值。sqrt(x):求 $x$ 的算术平方根(结果为双精度浮点数)。max(a, b)/min(a, b):求两个数中的最大值或最小值。
2. 具体例子
例子 4.1:输入直角三角形的两条直角边 $a, b$,求斜边 $c$。
double a, b, c;
cin >> a >> b;
c = sqrt(a * a + b * b);
cout << c;
3. 练习巩固
- 【简单】单选题:在 C++ 中,计算 $\sqrt{16}$ 应该调用的函数是( )。
A.
abs(16)B.max(16)C.sqrt(16)D.pow(16) - 【中等】填空题:表达式
max(10, min(5, 20))的运行结果是 ______。 - 【困难】阅读程序写结果:
cpp double x = -9.0; int y = 4; cout << sqrt(abs(x)) + max((double)y, 2.5);输出:____
教练参考答案与解析
第一模块
- B。
- 错。C++ 是编译型,Python 才是解释型。
- 51。$0.5GB = 512MB$,$512 \div 10 = 51.2$,取整约 51 秒。
第二模块
- B。D(68), E(69), F(70), G(71)。
- 5。
5 / 2是整数除法得 2;3.9 + 2 = 5.9;强制转换int丢掉小数得 5。 c - 'A' + 1或c - 64。
第三模块
- 6。外层 3 次,内层 2 次,$3 \times 2 = 6$。
- B。
- 9。
- i=1: 进入内层循环 j(1~1),sum+1 = 1
- i=2: continue,跳过
- i=3: 进入内层循环 j(1~3),sum+3 = 4
- i=4: continue,跳过
- i=5: 进入内层循环 j(1~5),sum+5 = 9
第四模块
- C。
- 10。
min(5, 20)得 5,max(10, 5)得 10。 - 7。
abs(-9.0)是 9.0,sqrt(9.0)是 3.0;max(4.0, 2.5)是 4.0;$3.0 + 4.0 = 7.0$(输出 7)。
教练寄语:
二级是跨越“逻辑门槛”的关键期。嵌套循环就像是钟表的时针和分针,外层动一下,内层转一圈。多画表格跟踪变量,多用 cmath 简化计算,你会发现编程的世界越来越大!加油!
—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com