C++魔法代码学院:第 15 课——真题大闯关(二):终极模拟考

2026-01-20
44

—— 战胜“沉默的评测机”与毕业典礼

  • 课时时长:90 分钟
  • 核心目标

    1. 全真模拟:体验 GESP 一级完整的考试流程(选择+判断+编程)。
    2. 规则重塑(重中之重):理解 OJ(在线评测)机制——严禁输出多余提示语(如“请输入”)。
    3. 规范养成:掌握文件命名、保存格式、代码规范。
    4. 毕业时刻:建立通过考试的信心。
  • 所需教具

    • 打印好的模拟试卷(笔试部分)。
    • 模拟考场环境(倒计时钟、安静标识)。
    • 毕业证书或奖状。

课程时间表

环节 时间 内容 教学隐喻/活动
考前 10 min OJ 的沉默法则 “冷面判官”的故事
笔试 20 min 单选题(15道) + 判断题(10道) 极速闯关
机试 40 min 编程题 (2道真题) 全封闭模拟考
复盘 15 min 格式规范与易错点 “满分代码为什么0分?”
毕业 5 min 总结与颁奖 授予“一级魔法师”头衔

详细教学流程

1. 考前:OJ 的沉默法则 (10分钟) <-- 观念大逆转

  • 情景引入

    • “同学们,以前我们的程序是写给用的,所以要礼貌地问‘请输入’。”
    • “但考试时,批改卷子的不是人,是一个叫 OJ (Online Judge)冷面机器判官。”
  • 判官的特点

    1. 它是“瞎子”:它看不懂“请输入一个数”这种汉字。
    2. 它是“对比怪”:它手里有一张标准答案纸。它会把你输出的东西和答案逐字对比
    3. 惨案演示
      • 标准答案要求输出:10
      • 小明输出了:答案是:10
      • 判官一看: != 1❌ 0分!
  • 新规则

    • 沉默是金!不要说话,不要提示,直接读入,直接输出结果。
    • 就像间谍接头,对暗号时多说一个字就暴露了。

2. 笔试:极速闯关 (20分钟)

  • 内容:GESP 一级真题混编(5道变量题 + 5道运算题 + 5道逻辑题 + 10道判断题)。
  • 重点考察
    • 变量命名规则(哪个是错的?1a, if, float)。
    • 表达式计算(10/3, 10%3, true && false)。
    • C++ 基础语法(每句话后面要加什么符号?)。

3. 机试:全封闭模拟考 (40分钟)

  • 氛围营造:全场肃静,禁止讨论,老师扮演监考官。
  • 题目 A(基础运算):买文具

    • 题目:一支笔 3 元,一个本子 5 元。输入笔的数量 a 和本子的数量 b,输出总共要多少钱。
    • 样例输入2 1
    • 样例输出11
  • 题目 B(逻辑循环):找幸运数

    • 题目:输入一个正整数 n。输出 1 到 n 之间所有能被 3 整除的数。
    • 样例输入10
    • 样例输出
      3
      6
      9
      
      (注意换行格式)

4. 复盘:满分代码为什么0分? (15分钟)

  • 现场演示(震撼教育)

    • 老师把刚才某个同学写的“礼貌代码”投屏到 OJ 评测机(或模拟评测)。
    • 代码:

      int a, b;
      cout << "阿姨你好,请输入你要买几支笔: "; // ❌ 致命错误
      cin >> a;
      cout << "请输入你要买几个本子: ";       // ❌ 致命错误
      cin >> b;
      cout << "一共需要: " << a*3 + b*5 << "元"; // ❌ "一共需要"和"元"都是多余的
      

    • 评测结果Wrong Answer (WA) —— 0 分

  • 满分修正

    int a, b;
    cin >> a >> b;      // 沉默地读入
    cout << a*3 + b*5;  // 沉默地输出数字
    cout << endl;       // 换行是个好习惯(虽然不换行通常也不扣分,但建议加)
    

5. 毕业:授予头衔 (5分钟)

  • 总结

    • 我们学会了控制变量、指挥循环、做出判断。
    • 我们现在已经不是只会玩游戏的小学生,而是能创造规则的初级程序员
  • 仪式

    • 颁发结课证书(或者巧克力勋章)。
    • 鼓励大家去参加 GESP 一级考试,那是成为真正“魔法师”的第一步。

附录:GESP 一级考前“救命”清单

(建议打印发给家长和学生,作为考前一晚的复习资料)

  1. 头文件背熟#include <iostream>using namespace std; 一个字母都不能错。
  2. 分号别漏:每行代码结束都要检查屁股后面有没有 ;
  3. 输入输出

    • cin >> (漏斗进家)
    • cout << (喇叭向外)
  4. 千万别说话:题目没让你输出的文字,一个字都别写!

    • cout << "ans=" << ans;
    • cout << ans;
  5. 变量要清零:做累加题(求和)时,int sum = 0; 必须写。

  6. 保存要及时:写完一段代码就按 Ctrl + S,别等电脑死机了哭鼻子。
  7. 考试心态:遇到不会的别慌,先做下一题,编程题能写多少写多少(骗分技巧:如果实在算不出结果,直接按样例输出有时候也能拿 10% 的测试点分数,比如直接 cout << 11;,当然这是下下策)。

给教练的最后建议

  • 关于 IDE:考试通常使用 Dev-C++ 或者 NOI Linux 环境。建议最后这节课确保学生使用的是Dev-C++,并教他们如何新建源文件(Source File)、如何编译运行(F11),而不是只会在在线网页编辑器里写。
  • 关于换行:GESP 一级有时候要求输出多个数,中间用空格还是换行?一定要教学生仔细读题

    • “Space separated” -> cout << i << " ";
    • “Line separated” -> cout << i << endl;
  • 未来的路:这只是开始。告诉孩子们,GESP 二级会有更厉害的魔法(数组、循环嵌套、更复杂的逻辑),期待在下一季课程见到他们!