简介:面向GESP一级备考场景的集训课PPT,适合中小学编程学习者、集训班教师及家长用于课堂讲授与考前梳理。课件围绕CCF编程能力等级认证展开,先说明认证定位、考试时间与晋级规则,再梳理一级考纲中的计算机基础知识、变量定义与使用、基本数据类型、程序三大结构以及算术、关系和逻辑运算。操作层面涵盖Dev-C++集成环境、C++程序基本框架、cout格式化输出、cin输入、变量命名规则与简单运算,并安排打印图形、两数求和差乘除等课堂练习,方便教师按“温故知新—课程内容—过关测验—课后练习”组织教学。压缩包共1个pptx文件,约19.99MB,页面完整,可直接投影授课或用于自学复盘。已有1615人学习,适合需要快速建立一级知识框架、明确备考重点的读者参考。
1. 一级知识地图:从考试规则到第一行 cout 的整体轮廓
GESP 一级的集训内容摊开看像一个文件夹,其实只有六层:考试规则、开发环境、程序骨架、输出、变量、输入。前两层回答“考什么、怎么给分”,中间把 C++ 的五行骨架拆到每一行,再往下是 cout 与 cin 这对输入输出搭档,最后落到变量声明和四则运算。整条路径是单向的——骨架立不起来,输出写不对;输出写不对,变量算得再准也没地方显示。它适合两类人:正在准备一级、想把零散课件串成一张网的学习者;以及已经能照着样例敲代码、但一离开答案就不知道从哪写起的 k12 编程学习者。地图先给到这里,后面按模块逐个说清楚重点落在哪。
2. 考试规则与分数结构:级别、场次与题型怎么分布
2.1 级别、场次与时长:一年四次机会怎么用
C++ 方向一共分 1 到 8 级,每年 3、6、9、12 月各有一场,也就是一年四次报考窗口。1 到 4 级每场 2 小时,5 到 8 级每场 3 小时,卷面满分统一 100 分。规则里还有一条容易被忽略:第一级必须考,之后每一级得分在 90 分(含)以上,可以跨过一级直接报下一级。
这条规则直接决定了复习策略。2 小时的考场时间要装下 15 道单选、10 道判断和 2 道编程题,如果不做时间切分,很容易在选择题上磨太久,最后编程题只剩二十分钟。合理的切法是客观题 30 到 40 分钟,两道编程题留 60 分钟,剩下的时间回头检查拼写和分号。跨级那条 90 分线更狠:它要求客观题几乎不丢分,编程题还得接近满分,容错空间比“通过”小得多。
| 项目 | 1–4 级 | 5–8 级 |
|---|---|---|
| 考试时长 | 2 小时 | 3 小时 |
| 卷面满分 | 100 分 | 100 分 |
| 考试月份 | 3、6、9、12 月 | 3、6、9、12 月 |
| 跨级条件 | 本级 ≥ 90 分可跨一级 | 本级 ≥ 90 分可跨一级 |
2.2 题型与分值:30 + 20 + 50 的结构
一级卷面由三块拼成:单选题 15 题、每题 2 分,共 30 分;判断题 10 题、每题 2 分,共 20 分;编程题 2 题、每题 25 分,共 50 分。客观题和编程题正好各占一半,这意味着任何一半塌掉,整张卷子都很难看。
| 题型 | 题量 | 单题分值 | 合计 | 主要考查点 |
|---|---|---|---|---|
| 单选题 | 15 | 2 | 30 | 概念记忆、读代码、语法细节 |
| 判断题 | 10 | 2 | 20 | 规则辨析、易混概念 |
| 编程题 | 2 | 25 | 50 | 输出格式、变量运算、简单逻辑 |
单选题里读代码的题占比不低,常见形式是给一段带 cout 的程序,问屏幕上打印什么。这类题不考你写不写得出来,只看你能不能按顺序把每一步的值推对,所以平时练习时“嘴上念一遍执行过程”比“看一眼觉得对”有用得多。判断题则是另一种画风,题干里经常出现“一定”“必须”“只能”这类绝对化表述,一级的知识点大多是“通常如此”而不是“绝对如此”,见到绝对化词先打个问号。
2.3 一级考纲六块内容与复习优先级
一级考纲列了六块:计算机历史与基础知识、变量的定义与使用、基本数据类型、程序三大结构、基本运算(算术、关系、逻辑)、输入与输出。这六块不是平均用力,梳理下来会发现它们分成两个梯队。
| 考纲模块 | 具体内容 | 常见考法 | 复习优先级 |
|---|---|---|---|
| 计算机历史与基础 | 发展简史、基本常识 | 单选记忆题 | 中 |
| 变量定义与使用 | 声明语法、命名规则 | 单选、判断、编程 | 高 |
| 基本数据类型 | int、float、double、char | 单选辨析、编程 | 高 |
| 程序三大结构 | 顺序、选择、循环 | 读代码、概念判断 | 中 |
| 基本运算 | 算术、关系、逻辑 | 编程题主力 | 高 |
| 输入与输出 | cout、cin | 编程题必经之路 | 高 |
优先级高不等于其他三块可以放弃。历史和基础常识属于“看一眼就能记住”的记忆题,投入产出比其实很高;三大结构在一级更多以“读一段代码判断执行顺序”的形式出现,不需要写复杂循环。真正需要动手练到形成肌肉记忆的,是变量声明、四则运算和 cout 的输出格式——这三样是两道编程题的地基。
3. 程序骨架与开发环境:五行代码里藏着的考点
3.1 五行骨架逐行拆解
一级要求能默写出来的最小程序就五行,但每一行都有对应的考点,漏一行就编译不过。
#include <iostream> // 头文件:把输入输出相关的声明引进来 using namespace std; // 使用标准命名空间,省去每次写 std:: int main() { // 主函数,程序从这里开始执行 cout << "Hello, World!" << endl; // 向屏幕输出内容并换行 return 0; // 返回 0,表示程序正常结束 }逐行看:#include <iostream>是预处理指令,行首的井号不能丢,尖括号里写的是头文件名,写成iostream.h是老式写法,一级环境里会报错。using namespace std;的作用是让后面直接写cout而不必写std::cout,分号照常要加。int main()是整个程序的入口,一对花括号圈出函数体,左花括号后面通常换行缩进。return 0;是给操作系统的返回值,0 代表正常结束,这一行漏掉在很多编译器上只是警告,但一级考试按规范写更稳。最后那行cout不是骨架的一部分,属于你要填进去的内容。
| 行号 | 代码 | 作用 | 漏掉或写错的后果 |
|---|---|---|---|
| 1 | #include <iostream> | 引入输入输出声明 | cout、cin 未定义 |
| 2 | using namespace std; | 打开标准命名空间 | 必须写std::cout |
| 3 | int main() | 程序入口 | 链接失败,无入口 |
| 4 | { } | 圈定函数体 | 语法错误 |
| 5 | return 0; | 返回正常状态 | 多数情况仅警告 |
还有几个名字需要分清:iostream是头文件名,cout、cin、cerr、clog是它里面提供的几个流对象。cout 管标准输出,cin 管标准输入,cerr 和 clog 管错误信息输出,一级阶段用得最多的是前两个。
3.2 书写规范五条:不是形式主义
课件里列了五条书写要求:英文键盘书写、用 tab 键缩进、符号成对书写、注意空格、随手保存。这五条看起来像老师唠叨,实际上每一条都对应一类真实故障。
英文键盘这一条最要命。中文输入法下的分号是“;”,引号是“”,括号是“()”,编译器不认识这些字符,报错信息往往是一串看不懂的stray '\357' in program。缩进用 tab 而不是一串空格,是为了让花括号的层级一眼可见,一级程序短,看不出差别,等代码长到二十行,缩进乱掉的代码自己都读不下去。符号成对书写指的是打左括号的同时把右括号补上,引号同理,这样就不会出现“写到行尾发现少一个引号,回头找半天”的情况。随手保存更是血泪经验,编译运行的是磁盘上的文件,改了没保存,跑的还是上一版,看着屏幕上的旧结果怀疑人生。
3.3 编译报错先看哪一行
Dev-C++ 这类集成开发环境把编辑、编译、运行打包在一起,新人最容易把它当黑匣子:点一下按钮,下面弹出一堆红字,不知道从哪看起。其实定位方法很固定——先看报错列表里的第一条,再看它给的行号,然后往那一行的上一行瞄一眼。
#include <iostream> using namespace std; int main() { cout << "Hello" << endl // 这一行末尾少了一个分号 return 0; }这段代码编译时会提示expected ';' before 'return',指向的是return 0;那一行。但真正的问题在上一行:编译器读到return才发现上一句没结束。所以看到“期望分号”类报错,第一反应应该是往上翻一行,而不是在报错行上反复改。常见的三类报错可以对照着记:
| 报错关键词 | 大概率原因 | 怎么改 |
|---|---|---|
expected ';' | 上一行语句没加分号 | 往上一行补; |
'cout' was not declared | 漏头文件或漏命名空间 | 补#include <iostream>与using namespace std; |
stray '\357' in program | 混入中文标点 | 切英文输入法重打该符号 |
运行成功但结果不对,属于另一类问题,编译器不会提醒。这时候要看的是输出内容和预期差在哪:是少了一个换行,还是数字算错了,还是根本没输出。把每次运行的预期结果先写在纸上,再和屏幕对照,比盯着代码发呆有效。
3.4 三大结构在一级的落点
考纲把顺序、选择、循环三大结构都列了进去,但一级的编程题基本停留在顺序结构:从上到下,一行一行执行,没有分支也没有重复。课件里的“打印图形”练习是个典型例子,既可以用多行 cout 硬写出来,也可以套循环,前者更稳、更不容易在考场上出错。
选择结构和循环在一级更多是以读代码题的形式出现,给你一段带 if 或 for 的程序,问你最终输出什么。这类题不需要你会写,但需要你会“人肉执行”:把变量的值一步步写在旁边,遇到判断就分出两条路,遇到循环就数清楚跑了几轮。把这个习惯练熟,等后面级别真正要写分支和循环时,手感是现成的。
4. cout、cin 与变量:一级编程题的全部武器
4.1 cout 的插入流:项目、表达式与字符串
cout 的写法可以概括成一个公式:cout << 项目1 << 项目2 << … << 项目n;。两个尖括号的方向是从程序指向屏幕,可以理解成“把右边的值插进输出流里”。项目有两种常见形态,输出结果完全不同。
#include <iostream> using namespace std; int main() { cout << 1 + 3 << endl; // 项目是表达式,先算出 4,再输出 4 cout << "1 + 3" << endl; // 项目是字符串,原样输出 1 + 3 cout << "结果:" << 1 + 3 << endl; // 字符串和表达式可以串在一条链上 return 0; }第一行没有引号,编译器把它当算式,先算后印;第二行加了双引号,引号内的内容一个字都不改地印出来。这就是为什么“输出两个数的和”和“输出这个算式”是两道不同的题。链式写法里每个项目前面都要有一个<<,漏一个就编译不过,多写一个也会出问题。
课件里的两个课堂练习正好对应两类基本功:打印指定图形,练的是多个 cout 的排版和换行位置;输出两个数的和、差、乘、除,练的是把表达式塞进输出流。图形题的关键不是算法,而是数清楚每一行前面有几个空格、行尾要不要换行,这些细节在 25 分的编程题里直接决定拿不拿满分。
4.2 endl 与格式化控制:换行背后的细节
endl出现在输出链末尾,作用有两个:换行,以及刷新输出缓冲区。一级阶段感受到的只是“换行”,但知道它还会刷新缓冲区,能解释一个现象——程序中途崩溃时,带 endl 的那部分内容往往已经显示在屏幕上,而只用"\n"的内容可能还卡在缓冲区里没出来。
cout << "第一行" << endl; // 换行并刷新 cout << "第二行" << "\n"; // 只换行,不主动刷新 cout << "第三行"; // 不换行,光标停在同一行末尾三个写法的区别在输出多个数字时特别明显。如果连续输出cout << a << b;,两个数字会粘在一起,看起来像一个数;加上空格或 endl 才能分开。一级编程题经常要求“每行一个结果”或“同一行用空格隔开”,这两种格式要求对应完全不同的写法,读题时要把这句话圈出来。
格式化控制这块,一级能用到的主要是换行、空格和字符串拼接。更细的宽度控制、小数位数控制需要额外的头文件和函数,属于后面级别的内容,一级不必提前铺开,但要知道“输出格式是可以被精确控制的”,遇到题目要求对齐时不会以为做不到。
4.3 变量:声明语法与命名五条规则
变量的定义可以拆成“类型 + 变量名 + 分号”三段:int n;声明一个整型变量 n,int n = 5;在声明的同时赋值。类型决定这个容器能装什么、占多大,变量名是你之后调用它的凭证。
int c1 = 1; // 声明整型变量 c1,初值 1 int c2 = 2; // 声明整型变量 c2,初值 2 cout << c1 + c2 << endl; // 3 cout << c1 * c2 << endl; // 2 cout << c1 - c2 << endl; // -1 cout << c1 / c2 << endl; // 0,不是 0.5命名规则有五条,每一条都能在选择题里单独出题:
| 规则 | 正确示例 | 错误示例 |
|---|---|---|
| 由字母、数字、下划线组成 | score_1 | score-1 |
| 不能以数字开头 | n1 | 1n |
| 不能包含空格 | myScore | my Score |
| 不能与关键字重名 | total | int |
| 区分大小写 | teacher与Teacher是两个变量 | 以为写错大小写没关系 |
最后一条是判断和单选的高频点。teacher、Teacher、TEACHER在 C++ 眼里是三个完全不同的名字,声明了其中一个,用另一个就会提示未定义。另外要注意cout并不是关键字,它是标准命名空间里的一个对象名,理论上你可以声明一个叫 cout 的变量,但那样后面的输出全都会出问题,实操中把它当保留字对待就行。
4.4 cin 读取与四则运算:方向别搞反
cin 的写法和 cout 正好相反:cin >> 变量1 >> 变量2;,尖括号方向是从屏幕指向变量。它不需要引号,也不需要在括号里写提示语——提示语要用单独的 cout 输出。
#include <iostream> using namespace std; int main() { int a, b; // 一次声明两个整型变量 cin >> a >> b; // 从键盘读两个数,空格或回车分隔 cout << a + b << endl; // 输出和 cout << a - b << endl; // 输出差 cout << a * b << endl; // 输出积 cout << a / b << endl; // 输出商,整数除法会舍去小数 return 0; }这段程序里最值得盯的是最后一行。两个 int 相除,结果仍然按整数处理,5 除以 2 得到 2 而不是 2.5。课件里用 135 和 513 做练习,如果题目直接写cout << 135 / 513;,屏幕上出现的是 0,很多新手的第一反应是“程序坏了”,其实是整数除法的规则在起作用。想要小数结果,参与运算的两个数里至少有一个得是浮点类型。
cin >> a >> b;的读入顺序也要注意:先读到的给 a,后读到的给 b,中间用空格、制表符或回车隔开都可以。如果题目要求先读数量再读一串数,变量声明的顺序和读取的顺序必须一一对应,写反了不会报错,但结果会整体错位,这类错误在检查时最难发现。
5. 易漏点排查:一级考场上最容易丢分的五处
5.1 语法与书写类:分号、大小写、中文标点
易漏点一:中文标点混进代码。这是新手翻车率最高的一项,全角分号、全角引号、全角括号在屏幕上和英文符号长得几乎一样,编译器却完全不认。
漏在哪:写代码时输入法没切,或者从别处复制了一段带中文标点的内容,眼睛扫过去看不出区别,直到编译报出一串stray开头的乱码。
怎么补:养成“进编辑器先切英文输入法”的固定动作;看到stray类报错,直接去报错行重打标点,不要试图理解那串八进制数字;写完后用查找功能搜一遍全角分号。
易漏点二:变量名大小写不一致。声明时写int Sum = 0;,使用时写成sum,编译器提示未定义,人却盯着屏幕觉得明明写过。
漏在哪:英文单词的大小写在阅读时被大脑自动归一化了,尤其是全小写和首字母大写之间的差别。
怎么补:变量名统一用全小写加下划线的风格,声明和使用保持同一套写法;如果报未定义,先检查大小写,再检查拼写。
5.2 运算与类型类:除法的坑和int的边界
易漏点三:整数除法丢小数。5 / 2得 2,1 / 2得 0,一级编程题里凡是出现“平均”“比例”“除法”字样的题目,都可能踩到这个点。
漏在哪:数学课上的除法默认保留小数,写代码时下意识以为结果自然是 2.5,直到输出对不上才发现类型没换。
怎么补:读题时先判断数据是不是整数;确定要小数,就把参与运算的变量声明成double,或者把其中一个数写成2.0这样的浮点字面量;写完用一组能整除和不能整除的数据各测一遍。
易漏点四:变量声明了没给初值就直接参与运算。int s; cout << s + 1;这种写法能编译通过,但 s 里装的是不确定的残留值。
漏在哪:编译不报错、运行不崩溃,只是结果莫名其妙,在考场上很难往“没初始化”上想。
怎么补:声明变量时顺手给个初值,int s = 0;只多敲四个字符,能省掉一整类玄学问题;累加用的变量尤其要记得清零。
5.3 输入输出类:方向、引号与换行
易漏点五:cin 和 cout 的箭头方向写反。把cin >> a;写成cin << a;,或者把cout <<写成cout >>。
漏在哪:两个符号长得对称,打字时手指比脑子快,加上编译器的报错信息往往指向类型不匹配,很难一眼看出是方向问题。
怎么补:记一个固定联想——数据从键盘流进变量,所以 cin 的箭头指向变量;数据从变量流到屏幕,所以 cout 的箭头指向屏幕。写完后逐个扫一眼箭头方向再编译。
| 易漏点 | 触发场景 | 检查动作 |
|---|---|---|
| 中文标点 | 输入法未切换 | 报错行重打符号 |
| 大小写不一致 | 长变量名 | 核对声明与使用 |
| 整数除法 | 平均、比例类题目 | 检查类型是否为 double |
| 未初始化 | 累加、计数变量 | 声明时给初值 |
| 箭头方向反 | 手快连续输入 | 逐个核对 cin/cout |
这五处有个共同特点:全都不是“不会做”,而是“会做但写错”。考场上真正拉开差距的往往不是难题,而是这些在平时练习里被样例答案遮住的小毛病。
6. 考前复习清单:把六块考纲过成一张自测表
复习到收尾阶段,最怕的是“感觉都会了,一写就卡”。比较有效的做法是把六块考纲拆成一张能打勾的自测表,每一项都要求自己能在不看资料的情况下完成,而不是“看着眼熟”。
| 自测项 | 达标标准 | 不达标就先补 |
|---|---|---|
| 默写程序骨架 | 五行代码一次写对,分号、头文件、命名空间齐全 | 第 3 章 3.1 |
| 输出表达式与字符串 | 能说清cout << 1+3和cout << "1+3"的差别 | 第 4 章 4.1 |
| 变量命名五条 | 给出一个变量名能判断是否合法 | 第 4 章 4.3 |
| 四则运算 | 能正确写出和、差、积、商四个输出 | 第 4 章 4.4 |
| 整数除法 | 知道5/2等于几,知道怎么改才能得 2.5 | 第 5 章 5.2 |
| cin 读入 | 能写出一行读两个数的语句 | 第 4 章 4.4 |
| 报错定位 | 看到 expected ';' 知道往上一行看 | 第 3 章 3.3 |
| 分值结构 | 能说出三种题型各多少分 | 第 2 章 2.2 |
表格之外还有两个具体技巧值得试。第一个是纸上跑代码:拿一道读代码的选择题,把每个变量的当前值写在一张纸的右边,每执行一行就更新一次,遇到输出就在纸上记下打印内容。这个动作慢,但能暴露“眼睛看懂了、脑子没跟上”的假会。第二个是故意写错:把分号删掉编译一次,把引号打成全角编译一次,看看报错长什么样。见过一次错误信息,考场上再遇到就不会慌。
我自己的教训来自一次模拟练习:代码逻辑全对,运行结果却是零分,查了十分钟才发现cout那一行末尾用的是全角分号,编译器报的错指向下一行,我一直在错误的位置改。从那以后我每次进编辑器,第一件事是把输入法切到英文,编译前再从头扫一遍所有标点,这个动作后来救过好几次。复习这件事没有捷径,把清单上的每一项都动手过一遍,比反复读课件踏实得多。希望帮到你。
本文还有配套的精品资源,点击获取