儿童编程 C++ 奇偶判断 信息学奥赛

10 岁孩子 C++ 第一课:3 个奇偶判断例题(含完整代码 + 家长讲解)

BabyCode 团队 · 2026-06-09 · 9 分钟阅读 · 含 3 个完整代码 + 6 个家长常见问题

奇偶判断是公认最适合 10 岁孩子的 C++ 第一课——只用 3 个概念:变量 int nif 判断、取余数 n % 2。一个题目就能把 C++ 80% 的入门语法全部练熟。
下面 3 个例题由浅入深,每个都附完整代码 + 家长讲解步骤 + 孩子实测常见错误。打开 babycode.online/cpp 跟着敲,最后一关我们用一个完整项目(找 1-100 内的偶数)把 3 个概念串起来。

一、先讲清楚 3 个核心概念(5 分钟讲完)

概念 1:变量(variable)
变量是「电脑帮你记一个数字的小盒子」。在 C++ 里声明一个整数变量:
int n; ← 这行意思是「电脑,帮我准备一个叫 n 的小盒子,里面装整数」。
概念 2:if 判断(conditional)
if 是「如果…那么…」的意思。C++ 的写法:
if (条件) { 满足条件就执行这里 }
条件必须放在 () 里,要执行的代码必须放在 {} 里。这是 C++ 严格的语法,少一个括号都会报错。
概念 3:取余数(% 运算符)
这是 C++ 里最巧的运算符。7 % 2 表示「7 除以 2 的余数」,答案是 1。8 % 2 表示「8 除以 2 的余数」,答案是 0。
规律:奇数除以 2 余 1,偶数除以 2 整除。所以 n % 2 == 0 就是「n 是偶数」。

讲完这 3 个概念,就可以做例题了。每个例题的设计逻辑都是「先口头算 3 个具体数字,再让孩子照着代码验证」——这种「先具体后抽象」的方法比直接讲代码 10 倍有效。

二、例题 1(入门):判断一个数是奇数还是偶数

题目

输入一个整数 n,输出「odd」表示奇数,「even」表示偶数。

示例

输入 7 → 输出 odd
输入 8 → 输出 even
输入 0 → 输出 even

完整代码(C++)

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;

    if (n % 2 == 0) {
        cout << "even";
    } else {
        cout << "odd";
    }

    return 0;
}

家长讲解步骤(5 步)

1先讲 3 行「准备代码」:

#include <iostream>
using namespace std;
int main() {

跟孩子说:「这 3 行是 C++ 的「开场白」,每一行都不能少。#include <iostream> 是请电脑准备好「输入输出」的工具,using namespace std 是说「我用标准工具箱」,int main() 是说「程序从这里开始」。」

2讲变量声明:

int n;

跟孩子说:int n; 是说『电脑,帮我准备一个叫 n 的整数盒子』。等下用户输入的 7 或 8,就装在这个 n 里。」

3讲输入:

cin >> n;

跟孩子说:cin 是 C++ 的「读」,箭头 >> 指向哪里就读到哪里。这里 cin >> n; 就是「把用户输入的数字读进 n 盒子里」。」 让孩子口头说一遍「读进 n 盒子里」。

4讲 if 判断(核心):

if (n % 2 == 0) {
    cout << "even";
} else {
    cout << "odd";
}

跟孩子说:if (n % 2 == 0) 这整句是「如果 n 除以 2 余数是 0」——也就是 n 是偶数。注意:C++ 里「等于」是两个等号 ==,一个等号 = 是「赋值」(前面讲过)。这是孩子最容易错的地方!」

然后讲 cout <<cout 是 C++ 的「写」,箭头 << 指向哪里就写到哪里。`cout << "even";` 就是「把 even 这个词写到屏幕上」。」

5讲收尾:

return 0;
}

跟孩子说:return 0; 是告诉电脑「程序正常结束了」(0 表示「没出错」)。} 是关上 main() 这个房间。每一层 { 都要有一个 } 对应。」

孩子在 babycode.online 实测的 3 个常见错误

错误 1:把 == 写成 =

if (n = 0) { ... } —— 这在 C++ 里是「把 n 改成 0」而不是「判断 n 是不是 0」,条件永远为真,孩子会得到错误答案。
教学对策:第一次写 C++ 时,反复让孩子念「等号等于等于,两个等号才算等于」的口诀。

错误 2:忘记 #include <iostream>

报错信息是 cout was not declared in this scope。孩子会问「我明明打了 cout 啊」——因为没请电脑准备好输入输出工具。
教学对策:把这 3 行开场白当作「C++ 三件套」写在一张便利贴上,贴在屏幕边。

错误 3:花括号 {} 漏写

报错信息是 expected '}' at end of input。孩子会数花括号数错。
教学对策:让孩子写完代码后,把所有 {} 画圈配对,应该左右数量相等。

三、例题 2(进阶):判断 3 个数里偶数的个数

题目

输入 3 个整数 a, b, c,输出其中偶数的个数。

示例

输入 1 2 3 → 输出 1(只有 2 是偶数)
输入 2 4 6 → 输出 3(全偶)
输入 1 3 5 → 输出 0(全奇)

完整代码

#include <iostream>
using namespace std;

int main() {
    int a, b, c;
    cin >> a >> b >> c;

    int count = 0;
    if (a % 2 == 0) count++;
    if (b % 2 == 0) count++;
    if (c % 2 == 0) count++;

    cout << count;
    return 0;
}

新概念:自增运算符 count++

count++ 是「count 加 1」的意思,等价于 count = count + 1。这种「自增」写法在 C/C++/Java 里到处用,孩子必须早早习惯。

家长讲解:怎么引导孩子「自己写出」而不是「抄」

不要直接给代码。先问孩子:

  1. 「我们需要记多少个数字?」(3 个:a, b, c)
  2. 「我们要不要一个计数器?」(要,从 0 开始)
  3. 「怎么判断 a 是不是偶数?」a % 2 == 0
  4. 「如果 a 是偶数,计数器要做什么?」(加 1)

孩子口头回答完这 4 问,代码自然就写出来了。这种「先口头推导再写代码」的训练,是 CSP-J 比赛的核心能力。

四、例题 3(综合):找 1 到 100 之间的所有偶数

题目

输出 1 到 100 之间所有的偶数,每个数字之间用空格分开。

完整代码

#include <iostream>
using namespace std;

int main() {
    for (int i = 1; i <= 100; i++) {
        if (i % 2 == 0) {
            cout << i << " ";
        }
    }
    return 0;
}

新概念:for 循环

for (int i = 1; i <= 100; i++) 这行是「让 i 从 1 变到 100,每变一次做一次里面的事情」。具体的:

跟孩子说:「for 循环就是『重复做一件事 100 次』的代码简写。i 这个小盒子从 1 开始,每次做完加 1,做完 100 次后停下来。」

家长讲解:循环里套判断

这个例题第一次把「循环」和「判断」两个概念串起来。让孩子口头跑一遍:

  1. i = 1:1 是奇数,不输出
  2. i = 2:2 是偶数,输出 2
  3. i = 3:3 是奇数,不输出
  4. i = 4:4 是偶数,输出 4
  5. ...
  6. i = 100:100 是偶数,输出 100
  7. i 变成 101,循环结束

跑完 5 步就够,剩下的孩子能自己推。「代码跑一遍」是程序员的核心能力,比任何语法都重要。

五、家长常见问题(6 个)

Q1: 10 岁孩子学 C++ 是不是太早?

不早。10 岁开始有 3-4 年准备期,正好赶上小升初后的 CSP-J 入门组(小学高年级和初一可以报名)。小小程序员 C++ 课 7 关就是为这个年龄段设计的。

Q2: 为什么奇偶判断最适合作为 C++ 第一课?

因为它只用到 3 个最基础的概念:(1) 变量 int n,(2) if 判断,(3) 取余数 n % 2。这 3 个概念覆盖了 C++ 80% 的入门语法,孩子用一个题就能把变量、if、% 全部练熟。

Q3: 孩子不会 % 是什么意思怎么办?

举一个具体例子:7 % 2 = 1(7 除以 2 余 1),8 % 2 = 0(8 除以 2 整除)。这就是「奇数除以 2 余 1,偶数除以 2 整除」的代码表达。让孩子用 5 个数字自己算一遍就懂了。

Q4: 孩子学完奇偶判断,下一步学什么?

推荐路径:奇偶判断(已经会)→ 最大值比较(if/else 嵌套)→ for 循环累加(1+2+...+100)→ 数组基础。/cpp 课程 7 关按这个顺序设计。

Q5: babycode C++ 课 够准备 CSP-J 吗?

作为「入门 + 兴趣培养」完全够——7 关覆盖 cout / 变量 / 条件 / 循环。但真要冲 CSP-J 获奖,需要在这个基础上刷历年真题(洛谷 / 牛客)。/cpp 是 0→1 的桥梁,1→100 需要专项刷题。

Q6: 需要装 Visual Studio 之类的 IDE 吗?

不用。小小程序员 C++ 课 浏览器里直接编译 + 运行 C++ 代码(用 WebAssembly 版的小型 C++ 编译器),和 Python 课一样零安装。等孩子学完 7 关、对编译有概念了,再装本地 IDE 不迟。

六、给家长的最后建议

3 个例题写完,孩子大概率会卡在「我打对了但还是报错」。这是 C++ 学习的正常过程——Python 解释器对错误宽容,C++ 编译器非常严格(多一个分号都不行)。请家长做两件事:

  1. 耐心:孩子第一次遇到编译错误时,不要直接说「这里少了个分号」。先让他自己看报错信息(红色那段英文),找出错误行号。读报错信息是 C++ 学习的核心能力。
  2. 奖励对比:如果孩子之前学过 Python,提醒他 Python 写完直接跑、C++ 写完要编译——「C++ 严格,但严格意味着你可以信任它。C++ 写对了,就是真的对了。」
教学小贴士: 别让孩子在 C++ 上一上来就尝试「写大项目」。3 个例题(一个数 / 多个数 / 找区间)就是 90% 小学阶段奥赛题目的核心。把这 3 个题做熟、做对,C++ 入门就算过关了。

下一步行动

打开 babycode.online/cpp,从第 1 关「Hello C++」开始。如果想先确认孩子适合 C++ 还是 Python,可以读 C++ 课程页的 7 关设计,或者参考 《教孩子学 Python 的 5 个常见误区》里关于「跳过打字基础」的警告。

→ 开始 C++ 第 1 关

关于作者: BabyCode 团队,关于本站。本文 3 个例题在我们 5 个 10-12 岁孩子家庭中实测通过,平均每个例题孩子独立写代码 + 调试需要 8-15 分钟。
参考: 中国计算机学会(CCF)CSP-J/S 认证大纲(2025 版),NOIP 全国青少年信息学奥林匹克竞赛大纲。