简介:这份GESP一级集训课PPT面向准备CCF编程能力等级认证的青少年及辅导教师,围绕一级考纲梳理计算机基础知识、变量定义与使用、基本数据类型、顺序/选择/循环三大结构、算术关系逻辑运算及输入输出等核心考点,并穿插课堂练习与过关测验,便于课堂讲授或自学复盘。压缩包共1个pptx文件,约19.99MB,以课件形式集中呈现考试简介、Dev-C++程序框架、cout输出、变量运算与cin输入等模块,目录按温故知新、课程内容、过关测验、课后练习组织。课件将知识点与课堂练习、过关测验串联,可帮助教师直接用于集训授课,也方便学生课后按模块复习,理解从程序框架、输出到变量运算与输入的基础编程流程。已有1615人学习,适合需要快速搭建一级集训课程、对照考纲查漏补缺的师生使用。
1. GESP 一级到底考什么:100 分里有 50 分压在两道编程题上
很多人第一次拿到 GESP 一级的卷子会愣一下:单选 15 题 30 分、判断 10 题 20 分、编程 2 题 50 分,客观题占一半,编程题占另一半。真正的分水岭不在会不会背概念,而在那两道 25 分的编程题能不能完整跑出结果——一级的编程题很少涉及复杂算法,考的都是程序框架、变量、输入输出这几样基础功,写不完整就丢 25 分,写完整了就是白给。集训课把这一级拆成编程思维、计算思维、逻辑思维三条线,落到考卷上其实就一句话:会写一个能输入、能计算、能按格式输出的完整程序。这份 GESP 一级集训课的资料,就是围着这个目标把考点、易错点和练法排了一遍,适合刚接触 C++、准备第一次上考场的人。
2. 卷面结构:30 分客观题加 50 分编程题,时间到底怎么切
一级考试时长 2 小时,分数构成看着均衡,实际答题节奏差别很大。客观题拼的是熟练度和记忆,编程题拼的是完整度和细心程度,两者在考场上的时间投入完全不是一个量级。先把这张表记住,再谈具体考点。
2.1 三类题型的分数分布与建议用时
| 题型 | 题量 | 每题分值 | 合计 | 建议用时 | 目标得分 |
|---|---|---|---|---|---|
| 单选题 | 15 | 2 | 30 | 25~30 分钟 | 26 分以上 |
| 判断题 | 10 | 2 | 20 | 10~15 分钟 | 18 分以上 |
| 编程题 | 2 | 25 | 50 | 60~70 分钟 | 40 分以上 |
| 检查与补交 | — | — | — | 10 分钟 | — |
这张表真正想说的是两件事。第一,客观题必须在一节课左右的时间里做完,留给编程题的时间不能少于一个小时,因为编程题不是"想出来就写完",还得编译、改错、对着样例核对输出格式。第二,客观题错三道以内、编程题拿下一道半,总分就已经在 85 分上下;而只要编程题一道没交,30 加 20 全对也只有 50 分。
90 分(含)以上可以跨一级报名,这条规则决定了一件事:如果你把一级当成"过就行"的考试,编程题拿一道满分手就够;如果你想冲跨级,两道编程题都得稳稳落地,容错空间会被压得很小。集训课里那些课堂练习——打印图形、两数四则运算——看着简单,实际对应的就是编程题最常见的两种形态:格式输出型和输入计算型。
2.2 一级考纲六块内容,各自长什么样
一级考纲列了六块:计算机历史与基础知识、变量的定义与使用、基本数据类型、程序三大结构、基本运算、输入与输出。这六块不是平均分布,它们在卷面上的落点差别明显。
| 考纲模块 | 常见出题位置 | 分值占比感受 | 掌握难度 |
|---|---|---|---|
| 计算机历史与基础知识 | 单选、判断 | 约 10 分 | 低,靠记忆 |
| 变量的定义与使用 | 单选、判断、编程 | 约 20 分 | 中,规则要背清 |
| 基本数据类型 | 单选、判断、编程 | 约 15 分 | 中,重点在整型 |
| 程序三大结构 | 单选、判断 | 约 10 分 | 中,一级以顺序为主 |
| 基本运算 | 单选、编程 | 约 20 分 | 中高,除法是雷区 |
| 输入与输出 | 编程题核心 | 约 25 分 | 高,分值最重 |
读这张表的正确姿势是:把"输入与输出""基本运算""变量"这三块捆在一起看,它们几乎构成了编程题的全部内容,也构成了一半以上的客观题。计算机历史这类内容属于纯记忆项,考前一晚集中过一遍就够,不要在这上面耗掉本该用来敲代码的时间。
考纲里的"程序三大结构"是一级到二级的过渡内容。一级的编程题绝大多数是顺序结构,写几行就完;但客观题一定会考到选择结构和循环结构的概念,比如给出三种结构的描述让你判断哪一个属于分支。这种题不难,怕的是把"顺序"和"循环"的定义记串了,一定要在脑子里挂一个画面:顺序是从上到下,选择是岔路口,循环是绕圈跑。
2.3 单选题的三种出法,对应三种答法
一级单选题翻来覆去就三种形态,认清形态比刷题数量更管用。
第一种是概念记忆题,比如问 C++ 源程序文件的后缀名是什么、编译之前必须做的事情是什么、常见集成开发环境的作用是什么。这类题没有推导空间,答案要么背过要么没有,答题时不要纠结超过 20 秒,拿不准就先标记跳过,等编程题写完再回来蒙一个——注意是蒙一个而不是空着,一级不设倒扣分。
第二种是读程序写结果题,给出几行代码问输出是什么。这类题的正确答法是"手算不跳步":把代码里的变量值一行一行写在下面对应位置,遇到 cout 就把当时的值抄出来,遇到除法就立刻判断是不是整数除法。这类题最常见的坑是cout << 7/2;这种,很多人下意识写 3.5,实际输出是 3。
第三种是改错题或规则判断题,比如"下面哪个变量名不合法""哪一行有语法错误"。这类题的答法是把选项逐个往规则上套,而不是凭感觉找"看着别扭"的那个。
2.4 判断题:先找那句绝对化的话
一级判断题 10 题 20 分,题量不大但很容易失分,因为它考的都是那种"半对不对"的表述。答题时有一个很实用的动作:先找句子里有没有"一定""必须""可以以数字开头""区分大小写"这类绝对化或者边界性的词。
举几个一级反复出现的判断点。变量名区分大小写,teacher、Teacher、TEACHER是三个不同的变量,这个说法是对的。变量名可以以数字开头,这个说法是错的,4name不合法。变量名不能和关键字重名,对的。变量名里不能包含空格,对的。main函数是程序的入口,对的。
判断题最容易出错的地方不是知识不会,而是读得太快。比如"变量名可以由字母、数字和下划线组成"和"变量名可以由字母、数字和下划线开头",一字之差,前者对后者错。判断题要做的不是判断这句话大概对不对,而是逐字读完再判断——这一点在后面易错章节还会展开说。
3. 程序框架与 cout 输出:一级编程题的基础,写错一行就拿不到分
编程题 25 分一题,很多考生交上去的代码不是逻辑错,而是框架缺行、符号写错、输出格式不对,直接判 0。一级的编程题评分看的是程序能不能编译通过、输出是不是和样例一字不差,所以框架和输出这两块必须先练到不用想就能敲出来。
3.1 四行骨架:从哪里开始写,到哪里必须结束
一个完整的 C++ 程序要有四样东西:头文件、名空间、主函数、返回值。少一样都可能编译不过。
#include <iostream> // 声明头文件,cout 和 cin 都定义在里面 using namespace std; // 使用标准名空间,这样写 cout 不用加 std:: 前缀 int main() { // 主函数,程序从这里开始执行 cout << "Hello, World!" << endl; // 输出一行文字,endl 表示换行 return 0; // 返回 0,表示程序正常结束 }这五行的每一行都有对应考点。#include <iostream>之所以必须写,是因为cout和cin定义在这个头文件里,不写它编译器根本认不出这两个名字;using namespace std;是为了省掉std::前缀,漏掉这行就得写成std::cout,一级考生漏写基本必编译报错;int main()是程序入口,写成void main()在标准 C++ 里不合法,一级一律按int main()写;return 0;是返回值,虽然有些编译器允许省略,但考场上写全永远不吃亏。
书写习惯上还有五条要求,是一级就要养成的:英文键盘书写,中文符号会让编译直接失败;用 Tab 键做缩进,让代码块层次看得清;符号成对书写,先打{}再往中间填内容,先打""再往里写字符串;注意空格,int a之间要留空格,inta会被当成一个整体;随手保存,考场环境再稳也不差这一下。
3.2 cout 的两个项目类型:表达式和字符串
cout的语法形式是cout << 项目1 << 项目2 << ... << 项目n;,其中"项目"只有两种身份,分清这两种身份,输出题就通了一大半。
第一种是表达式,输出的是表达式的计算结果,不加引号。cout << 1 + 3;输出的是 4,不是1+3。第二种是字符串,必须用双引号包起来,输出的是引号里面的原文。cout << "1 + 3";输出的是1+3这三个字符,因为它们在引号里,是文字不是算式。
这两个放在一起对比,问题就出来了:cout << "1+3";和cout << 1+3;的输出去掉换行之后一个是1+3一个是4,而这两行代码只差一对引号。这类题在单选和判断里出现频率极高,编程题里也经常因为多写或漏写一对引号导致样例对不上。
还要特别注意endl的作用。endl表示换行并刷新缓冲,cout << "a" << endl; cout << "b" << endl;输出的是两行;如果不写endl,两行内容会黏成一行。编程题的输出比对是逐字符的,多一个换行、少一个换行都算错。
3.3 打印图形题:不开循环也能拿满的写法
打印图形是一级最经典的编程题原型——给一张由星号组成的图,要求原样输出。一级还没把循环用熟,完全可以用多行cout硬写,判分只看输出,不看用了什么结构。
#include <iostream> using namespace std; int main() { cout << "*" << endl; // 第 1 行,1 个星号 cout << "**" << endl; // 第 2 行,2 个星号 cout << "***" << endl; // 第 3 行,3 个星号 cout << "****" << endl; // 第 4 行,4 个星号 return 0; }这段代码可以更短,把换行符写进字符串里,一行搞定:
#include <iostream> using namespace std; int main() { cout << "*\n**\n***\n****" << endl; // \n 是换行符,效果和 endl 一样 return 0; }两段代码输出完全一致,区别只在可读性和出错概率。多行写法每行独立,改起来方便,漏一个换行也只影响一行;单行写法短,但漏一个\n整张图就错位。考场上建议用多行写法,理由是改错成本低——图形题最容易出的事故是某一行星号多一个或少一个,多行写法一眼能看出来在哪行。
图形题真正的失分点不在代码,在"数格子"。题目给的样例里每一行星号后面有没有空格、最后一行结束要不要空行、图形左侧有没有对齐空位,这些都得逐字对。很多人代码写对了,输出格式差一个空格,25 分直接归零。做法是把题目样例复制到草稿纸上,一个字符一个字符地数,再回来写代码。
3.4 四则运算输出题:135/5 和 135/6 的差别
第二类经典编程题是两个数的加、减、乘、除。看着简单,但它把"整数除法"这个一级最大的问题塞了进来。
#include <iostream> using namespace std; int main() { cout << 135 + 5 << endl; // 加法,输出 140 cout << 135 - 5 << endl; // 减法,输出 130 cout << 135 * 5 << endl; // 乘法,输出 675 cout << 135 / 5 << endl; // 除法,能整除,输出 27 return 0; }这段能全对,是因为 135 除以 5 恰好整除。把 5 换成 6,最后一行的结果就变成了 22 而不是 22.5——两个整数相除,结果仍然是整数,小数部分直接被舍掉,不是四舍五入。这是 C++ 的语言规则,不是考试的例外,一级考生在这上面翻车的频率高得离谱。
如果题目要求保留小数,就得让参与运算的至少一方是浮点类型,比如把被除数写成135.0。但一级的编程题绝大多数情况下只要求整数结果,所以看到除法先问一句:这两个数都是整数吗?是,那就老老实实输出整数商。
还有一个容易忽略的点:这四个输出之间要不要加说明文字。如果题目样例写的是单独一个140,你就不能输出135+5=140;反过来,样例里带=号,你也得原样带上。一级编程题的评分逻辑是严格比对,多余的字和缺失的字一样致命。
4. 变量与数据类型:命名规则和整数除法,一级最容易掉的两个坑
变量这一块的知识点都很短,但全是细节型考点,写在卷子上就是那种"会,但容易错"的题。集训课把它拆成三个动作:声明、命名、运算。三个动作各有各的雷区。
4.1 变量声明与四条命名红线
变量是存储信息的容器,是一个可以变化的量。声明一个整型变量的写法是int 变量名;,其中int是数据类型,变量名由自己起,分号结尾。
命名规则一共四条,每一条都能单独出一道题:
| 规则 | 正确例子 | 错误例子 | 错在哪 |
|---|---|---|---|
| 只能由字母、数字、下划线组成 | score_1 | score-1 | 减号不是合法字符 |
| 不能以数字开头 | n1 | 4name | 以数字开头 |
| 不能包含空格 | totalSum | total Sum | 中间有空格 |
| 不能和关键字重名 | value | int | int是关键字 |
另外还有一条不是"禁止"但极重要:变量名区分大小写。teacher、Teacher、TEACHER是三个完全不同的变量,各自占一份内存,互不影响。初学者容易觉得这只是"书写风格问题",实际上如果在一个程序里同时写了a和A,编译器会把它们当成两个变量,你给a赋的值在A里根本看不到,这种 bug 找起来能耗掉半场考试的时间。
命名的建议是"短而有意义"。一级的编程题变量不多,用a、b、n、sum这类名字完全够用,别为了好看起theFirstNumber这种长名字,敲错一个字母就是编译错误。
4.2 四个基本类型和它们装得下的东西
一级涉及的基本数据类型主要是四个,各自的用途要分清楚:
| 类型 | 存什么 | 例子 | 注意 |
|---|---|---|---|
int | 整数 | int n = 10; | 一级最常用 |
float | 单精度小数 | float x = 1.5; | 精度较低 |
double | 双精度小数 | double y = 1.5; | 精度更高 |
char | 单个字符 | char c = 'A'; | 用单引号,不能放多个字符 |
表格里最需要盯住的是char那一行的"单引号"。字符用单引号'A',字符串用双引号"A",两者不能混。考试里常见的错误选项就是把char c = "A";写成合法语句,实际这是类型不匹配。
浮点类型的意义在于解决整数除法。只要有一方是double,135 / 6就会得到 22.5。但一级的编程题很少要求小数输出,所以浮点类型更多出现在客观题的概念判断里,比如"double能存小数,int不能"这类。
4.3 cin 输入:顺序、类型和那个经典问题
输入用cin >> 变量名;,箭头方向和有cout相反,这个方向记反了是初学者最常见的笔误。多个变量可以连着写:cin >> a >> b;,程序会按顺序从输入里取值。
#include <iostream> using namespace std; int main() { int a, b; // 一次声明两个整型变量 cin >> a >> b; // 按顺序读入两个整数,中间用空格或回车隔开 cout << a + b << endl; // 输出它们的和 return 0; }这段代码有三个细节值得说。第一,int a, b;是一次声明两个变量,写法和int a; int b;等价,后者更稳但更长,考试用哪种都行。第二,cin取值时按空格或回车切分,所以输入 "3 5" 和输入 "3" 回车 "5",结果完全一样。第三,cin不检查你输入的东西类型对不对,如果题目说输入两个整数,你输入了小数,后面的行为就不可预期了——考场上按题目给的样例格式输入即可。
cout和cin的名字来源也经常被考到:cout是输出流,cin是输入流,两者都是标准库里的对象,都要靠#include <iostream>才能用。还有cerr和clog两个同类对象,一级偶尔会在选项里出现,它们都跟错误输出相关,认识名字即可。
4.4 真题演练:两个数的和、差、积、商
把前面的东西合起来,就是一级编程题最典型的完整形态:读入两个整数,输出它们的和、差、积、商。
#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; }写这道题时按顺序检查四件事。第一,头文件和名空间有没有;第二,两个变量是不是都声明了、名字有没有前后不一致;第三,四个运算符号有没有用错,尤其乘法是*不是×,除是/不是÷;第四,四行输出是不是每行都有endl,题目要求的顺序是不是和、差、积、商。
从判卷角度看,这道题失分最多的不是算错,而是顺序错和格式错。顺序错指的是题目要"和、差、积、商"你写成了"和、积、差、商",程序能跑但结果对不上;格式错指的是少了一个换行,四行结果黏成一行。这两类错误都不会有任何提示,编译阶段一切正常,跑出来才发现不对,所以在提交前一定要自己把样例输入一遍,用眼睛逐行比对。
5. 失分点复盘:一级考生最常错的五道题,错法几乎一模一样
每次模拟测验结束,翻一遍卷子会发现错误高度集中。这一章把五个高频失分点按"错在哪、为什么错、怎么答对"拆开讲,每一条都对应一类具体的题目,不是泛泛而谈的注意事项。
5.1 把 4name 当成合法变量名
错在哪:题目给出四个变量名让选合法的那个,很多人选了4name或者my name。为什么错:脑子里只记住了"能由字母数字下划线组成",漏掉了"不能以数字开头"和"不能含空格"这两条限制,规则记了半截就等于没记。怎么答对:判断变量名合不合法,固定走四步——有没有非法符号、第一个字符是不是数字、中间有没有空格、是不是关键字。四步走完再下结论,不要凭眼熟。
这道题的变体是把teacher、Teacher、TEACHER放在一起问"是不是同一个变量",答案是三个不同的变量,因为区分大小写。还有一版是问int能不能当变量名,不能,因为它是关键字。这三个版本其实考的是同一组规则,把四条规则背成一句口诀比零散记忆管用得多。
5.2 分号写成中文分号,引号括号不成对
错在哪:代码逻辑全对,一编译报一堆错,仔细看是行尾用了中文分号;,或者字符串少了一个引号。为什么错:写代码时输入法没切回来,或者敲左括号的时候没顺手把右括号带上,等到写完再回去找就找不到了。怎么答对:进考场第一件事是确认输入法在英文状态;写任何成对符号都遵循"先打一对、再填内容"的顺序,先打{}再往里写函数体,先打""再往里写字符串。检查时用一个笨办法:从头到尾数一遍左括号和右括号的数量,对不上就一定有漏。
这类错误最冤的地方在于它的分值——一个中文分号能让整份代码编译失败,25 分变 0 分,而它的技术含量为零。血泪经验是:不要在写完之后才检查符号,要在写的过程中就养成成对书写的肌肉记忆。
5.3 整数除法当成小数除法
错在哪:题目要求输出两个整数相除的结果,考生写了cout << 7 / 2;,以为会输出 3.5,实际输出 3。为什么错:把数学课的除法直觉直接搬进了程序,没意识到"两个整数相除,结果还是整数"这条语言规则,小数部分是被直接舍掉的,既不是四舍五入也不是保留。怎么答对:看到除法先做一次类型判断,两边都是整数就按整数除法算结果。如果题目确实要求小数,就把参与运算的某一方改成浮点类型,比如写成7.0 / 2。
这类题在单选题里出现得最多,通常给四个选项:3、3.5、4、程序报错。正确答案是 3。判断题里也会换个说法,比如"两个整数相除的结果一定是整数",这句话是对的。编程题里则表现为样例对不上,输出 3 而期望是 3.5,这时候先回头看类型而不是怀疑公式。
5.4 主函数漏 return 0 或者写成 void main
错在哪:代码整体能跑,但框架不标准,main前面写的是void,或者结尾忘了return 0;。为什么错:看过的老代码里有人这么写,或者老师演示时省略过,就以为可以省,实际上标准 C++ 要求main返回int。怎么答对:框架固定成四行写法,#include <iostream>、using namespace std;、int main() {、return 0; },把这四行当成模板背下来,每次开新题先敲框架再写逻辑,不给漏行留机会。
这一点在客观题里也有对应考法,比如问"程序从哪个函数开始执行",答案是main函数;问"return 0;表示什么",表示程序正常结束。框架题看似简单,但它是所有编程题的前提,框架不对,后面写得再漂亮也是 0 分。
5.5 输出格式:多一个空格、少一个换行
错在哪:程序逻辑完全正确,样例比对却显示错误,逐字符对比发现多了一个空格,或者少了一个换行。为什么错:写代码时习惯性地在<<两边加了空格,或者在每个数字后面顺手加了个空格,而题目样例是紧凑输出。怎么答对:把输出格式当成题目的一部分来读,样例里有几个空格就写几个空格,样例里每行一个数就一定要有endl,样例里数字之间有逗号就补上逗号。最稳的做法是先用题目样例当输入跑一遍,把输出和样例并排放在一起,一个字符一个字符地核。
这道题的麻烦之处在于它不会被编译器发现,程序安静地跑完,结果就是不对。翻车的人往往是逻辑最清楚的那批,因为他们的注意力全在算法上,忘了输出格式也是评分标准。编程题的目标不是"算对",是"输出得和样例一模一样",这两件事之间差着一个格式核查的动作。
6. 考前两周的练法:一套能复现到考场上的作答流程
最后两周不建议再刷新题,而是把已有的题型练成固定动作。下面这套流程是从模拟测验里磨出来的,核心思路是"框架先行、样例对齐、检查清单化"。
第一步,客观题限时 30 分钟做完,遇到读程序题一律手算,把变量值写在题干下面。第二步,编程题开新文件先敲四行框架,敲完编译一次,确认环境没问题再写逻辑。第三步,写完立刻用题目样例跑,输出和样例逐字符比对,重点看空格和换行。第四步,提交前走一遍检查清单。
| 检查项 | 具体动作 | 对应失分点 |
|---|---|---|
| 框架完整 | 头文件、名空间、int main、return 0 | 框架缺行 |
| 符号规范 | 全英文符号、括号引号成对 | 中文分号 |
| 变量一致 | 声明名与使用名逐字对应,注意大小写 | 变量名写错 |
| 运算类型 | 有除法先判断两边是不是整数 | 整数除法 |
| 输出格式 | 空格、换行、顺序与样例一致 | 格式比对失败 |
清单不长,但每一项都对应着一类真实失分。我自己的习惯是把它抄在草稿纸最上面,每写完一道编程题就从头扫一遍,扫完再写下一道——从那以后我每次交卷前都强制把这张清单走一遍,模拟测验里那种"能跑但不对"的低级错误基本绝迹了。
押题方向上,一级的重点非常集中:程序框架、cout的输出规则、变量命名、整数除法、cin的用法,这五块覆盖了绝大部分分值。打印图形和四则运算是编程题最可能的两种形态,把这两类题各写三遍,写到不用想就能敲出完整代码,考场上的编程题就不再是风险点。集训课里那些课堂练习和过关测验,本质上就是这五块的反复演练,把它们当模板练熟,比刷一堆偏题有用得多。
希望帮到你。
本文还有配套的精品资源,点击获取