火龙信奥
  • 首页
  • 课程
  • 题库
  • 打卡
    • 代码对战
    • 快速对战
  • 题单
  • 团队
  • 荣誉墙
  • 商城
  • 登录 / 注册

GESP 二级编程能力认证讲义

作者: 作者的头像   huolong , 时间:2026-08-07 21:31:33 , 所有人可见, 阅读  2

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. 练习巩固

  1. 【简单】单选题:在流程图中,用于表示“判断或分支”的图形是( )。 A. 矩形 B. 菱形 C. 平行四边形 D. 椭圆
  2. 【中等】对错题:C++ 是一种解释型语言,代码编写后不需要编译即可直接在操作系统上运行。( )
  3. 【困难】填空题:某视频文件大小为 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. 练习巩固

  1. 【简单】单选题:字符 'D' 的 ASCII 码是 68,则字符 'G' 的 ASCII 码是( )。 A. 70 B. 71 C. 72 D. 73
  2. 【中等】填空题:执行语句 cout << (int)(3.9 + 5 / 2); 输出的结果是 ______。
  3. 【困难】阅读程序填空:输入一个大写字母,输出它在字母表中的序号(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. 练习巩固

  1. 【简单】阅读程序写结果: cpp int cnt = 0; for (int i = 1; i <= 3; i++) for (int j = 1; j <= 2; j++) cnt++; cout << cnt; 输出:____
  2. 【中等】单选题:要实现输出“九九乘法表”,最合适的结构是( )。 A. 单层 for 循环 B. 双层 for 循环嵌套 C. if-else 嵌套 D. while 循环
  3. 【困难】阅读程序写结果(逻辑陷阱): 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>。
  • 核心函数:
    1. abs(x):求整数绝对值;fabs(x) 求浮点数绝对值。
    2. sqrt(x):求 $x$ 的算术平方根(结果为双精度浮点数)。
    3. 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. 练习巩固

  1. 【简单】单选题:在 C++ 中,计算 $\sqrt{16}$ 应该调用的函数是( )。 A. abs(16) B. max(16) C. sqrt(16) D. pow(16)
  2. 【中等】填空题:表达式 max(10, min(5, 20)) 的运行结果是 ______。
  3. 【困难】阅读程序写结果: cpp double x = -9.0; int y = 4; cout << sqrt(abs(x)) + max((double)y, 2.5); 输出:____

教练参考答案与解析

第一模块

  1. B。
  2. 错。C++ 是编译型,Python 才是解释型。
  3. 51。$0.5GB = 512MB$,$512 \div 10 = 51.2$,取整约 51 秒。

第二模块

  1. B。D(68), E(69), F(70), G(71)。
  2. 5。5 / 2 是整数除法得 2;3.9 + 2 = 5.9;强制转换 int 丢掉小数得 5。
  3. c - 'A' + 1 或 c - 64。

第三模块

  1. 6。外层 3 次,内层 2 次,$3 \times 2 = 6$。
  2. B。
  3. 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

第四模块

  1. C。
  2. 10。min(5, 20) 得 5,max(10, 5) 得 10。
  3. 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

关于火龙

  • 关于我们
  • 预约试听
  • ACM课程
  • CSP课程
  • 学习指南

帮助中心

  • 用户协议
  • 打字练习
  • 在线画图
  • DevC++下载
  • CSP报名
  • GESP官网

推荐课程

  • C++零基础入门(可试看)
  • C++进阶提升
  • GESP考级辅导
  • GESP打卡
  • CSP-J/S打卡

公众号

火龙信奥公众号二维码

抖音号

火龙信奥抖音号二维码

地址:义乌市北门街188号新天地商厦二楼2F 邮箱:wdlok305@126.com

© 2017-2026 义乌市睿码科技有限公司版权所有 浙ICP备2021013995号

火龙信奥
请输入登录信息


请完成安全验证
验证码底图 滑块
向右拖动滑块完成验证
请输入用户名 / 绑定的手机号码



请输入注册信息(手机号验证码注册)





验证码5分钟有效,60秒内不可重复获取,每日最多3次

微信登录

微信登录二维码

正在生成二维码...

账号已过期,请续期。
去续期

绑定手机号

📱

为了更好地保护您的账号安全,享受完整的平台服务

请您尽快绑定手机号码