💻 C1-0-2 AI的原理与发展 · OJ练习题

本讲是AI启蒙课,不讲代码 · OJ题目为入门热身:10道基础 + 5道进阶

📋 做题说明

本讲是 AI 启蒙课,课上不讲代码。这里的 OJ 题目是编程入门热身题,难度很低:从"在屏幕上输出一句话"开始,慢慢过渡到"输入两个数做加减乘除"。
📌 目标:让孩子先熟悉"在 OJ 平台上提交代码、看结果"的流程,为后面 C1 正式学编程打基础。
📌 建议顺序:先做 10 道基础题(1~10),再挑战 5 道进阶题(11~15)。
🔐 看代码:每道题下面都有"做题思路"。如果想直接看完整代码和解析,请在下方输入本讲密码,一次性解锁所有题目代码。
💡 家长辅导:孩子第一次做 OJ 可能不熟悉"输入输出"的概念,先用第1题 Hello World 带他跑通流程。
🔓 代码密码: 输入4位密码后,所有题目代码自动显示

🟢 基础题(10道)· 输入输出与简单运算

1. Hello, World!
OJ-ID: 1001 · 难度:⭐
基础
在屏幕上输出一行英文:Hello, World! 这是所有程序员写的第一个程序。
💡 做题思路:用 cout 输出一行字,记得结尾换行 endl。注意标点和空格要和题目完全一样。
#include <iostream>
using namespace std;
int main() {
    cout << "Hello, World!" << endl;
    return 0;
}
📝 解析:cout = console output(屏幕输出);<< 是"把右边送到左边";endl = end line(换行)。标点别漏了逗号和感叹号。
2. 输出我的名字
OJ-ID: 1002 · 难度:⭐
基础
在屏幕上输出:I am a Coder. (练习输出一句话)
💡 做题思路:和第1题一样,换一行字输出即可。
#include <iostream>
using namespace std;
int main() {
    cout << "I am a Coder." << endl;
    return 0;
}
📝 解析:句号别漏。字符串必须用英文双引号引起来。
3. A+B Problem
OJ-ID: 1003 · 难度:⭐⭐
基础
输入两个整数 a 和 b,输出它们的和。例如输入 3 5,输出 8。
💡 做题思路:先定义两个 int 变量,用 cin 读入,再用 cout 输出 a+b。
#include <iostream>
using namespace std;
int main() {
    int a, b;
    cin >> a >> b;
    cout << a + b << endl;
    return 0;
}
📝 解析:cin = console input(键盘输入);>> 是"把右边读进左边"。a 和 b 之间可以空格或换行输入。
4. 计算两数之和(带文字)
OJ-ID: 1004 · 难度:⭐⭐
基础
输入两个整数,输出:sum = 两个数的和。例如输入 3 5,输出 sum = 8。
💡 做题思路:在 cout 里连着输出字符串和数字:先输出 "sum = ",再输出 a+b。
#include <iostream>
using namespace std;
int main() {
    int a, b;
    cin >> a >> b;
    cout << "sum = " << a + b << endl;
    return 0;
}
📝 解析:字符串和数字可以用 << 串起来输出。注意 "sum = " 等号两边各有一个空格。
5. 输出星星图形
OJ-ID: 1005 · 难度:⭐⭐
基础
在屏幕上输出三行星星:
*
**
***
💡 做题思路:连续输出三行,每行分别输出 1 个、2 个、3 个星号。
#include <iostream>
using namespace std;
int main() {
    cout << "*" << endl;
    cout << "**" << endl;
    cout << "***" << endl;
    return 0;
}
📝 解析:每一行结尾都要 endl 换行。
6. 长方形面积
OJ-ID: 1006 · 难度:⭐⭐
基础
输入长方形的长 a 和宽 b,输出面积 = a × b。例如输入 3 4,输出 12。
💡 做题思路:和 A+B 类似,把 + 换成 *(乘号)。
#include <iostream>
using namespace std;
int main() {
    int a, b;
    cin >> a >> b;
    cout << a * b << endl;
    return 0;
}
📝 解析:编程里乘号是 *,不是 ×。
7. 简单乘法
OJ-ID: 1007 · 难度:⭐⭐
基础
输入两个整数,输出它们的乘积。例如输入 6 7,输出 42。
💡 做题思路:和第6题几乎一样,只是题目换了说法。
#include <iostream>
using namespace std;
int main() {
    int a, b;
    cin >> a >> b;
    cout << a * b << endl;
    return 0;
}
📝 解析:巩固"输入-处理-输出"三步流程。
8. 输出两行文字
OJ-ID: 1008 · 难度:⭐
基础
输出两行:第一行 Hello,第二行 AI。
💡 做题思路:两条 cout,每条都 endl 换行。
#include <iostream>
using namespace std;
int main() {
    cout << "Hello" << endl;
    cout << "AI" << endl;
    return 0;
}
📝 解析:endl 表示换行。
9. 求平均分
OJ-ID: 1009 · 难度:⭐⭐⭐
基础
输入语文、数学、英语三科成绩(整数),输出三科的平均分(保留两位小数)。例如输入 90 80 70,输出 80.00。
💡 做题思路:三个 int 变量读入,(a+b+c)/3.0 算出平均分。注意:除以 3.0(小数)才会得到小数结果。
#include <iostream>
using namespace std;
int main() {
    int a, b, c;
    cin >> a >> b >> c;
    cout << (a + b + c) / 3.0 << endl;
    return 0;
}
📝 解析:整数/整数会丢掉小数!除以 3.0(带小数点)才会得到小数结果。例如 (90+80+70)/3.0 = 80.00。
10. 简单减法
OJ-ID: 1010 · 难度:⭐⭐
基础
输入两个整数 a 和 b(保证 a > b),输出 a - b 的结果。例如输入 10 3,输出 7。
💡 做题思路:把 A+B 的 + 换成 - 即可。
#include <iostream>
using namespace std;
int main() {
    int a, b;
    cin >> a >> b;
    cout << a - b << endl;
    return 0;
}
📝 解析:巩固加减乘除四种基本运算。

🟠 进阶题(5道)· 稍复杂一点

11. 三个数求最大值
OJ-ID: 1011 · 难度:⭐⭐⭐
进阶
输入三个整数,输出其中最大的那个。例如输入 3 7 5,输出 7。
💡 做题思路:先假设 a 最大,再和 b 比,如果 b 更大就记住 b,最后再和 c 比。(还没学 if,先跟着代码看懂思路)
#include <iostream>
using namespace std;
int main() {
    int a, b, c;
    cin >> a >> b >> c;
    int maxV = a;
    if (b > maxV) maxV = b;
    if (c > maxV) maxV = c;
    cout << maxV << endl;
    return 0;
}
📝 解析:用"擂台赛"思路:先让 a 当擂主,b 来挑战,c 再来挑战。学过 if 之后这题就很简单了。
12. 圆的面积
OJ-ID: 1012 · 难度:⭐⭐⭐
进阶
输入圆的半径 r(整数),输出圆的面积(π 取 3.14,结果保留两位小数)。例如输入 1,输出 3.14。
💡 做题思路:面积 = 3.14 × r × r。用 double 类型存小数。
#include <iostream>
using namespace std;
int main() {
    int r;
    cin >> r;
    cout << 3.14 * r * r << endl;
    return 0;
}
📝 解析:π 直接写 3.14,不要写"pi"。r×r 就是半径的平方。
13. 温度转换
OJ-ID: 1013 · 难度:⭐⭐⭐
进阶
输入华氏温度 f,输出摄氏温度 c。公式:c = (f - 32) × 5 / 9。例如输入 32,输出 0。
💡 做题思路:照着公式写:(f - 32) * 5 / 9。注意除以 9.0 避免丢小数。
#include <iostream>
using namespace std;
int main() {
    int f;
    cin >> f;
    cout << (f - 32) * 5 / 9.0 << endl;
    return 0;
}
📝 解析:照着数学公式翻译成代码即可,括号不能少。除以 9.0 才不会丢小数。
14. 交换两个数
OJ-ID: 1014 · 难度:⭐⭐⭐
进阶
输入两个整数 a 和 b,把它们交换后输出。例如输入 3 5,先输出 5,再输出 3。
💡 做题思路:用一个"临时变量"当中转站:先把 a 存进 tmp,再把 b 放进 a,最后把 tmp 放进 b。
#include <iostream>
using namespace std;
int main() {
    int a, b;
    cin >> a >> b;
    int tmp = a;
    a = b;
    b = tmp;
    cout << a << " " << b << endl;
    return 0;
}
📝 解析:交换两个变量必须用临时变量,不然直接 a=b 会把原来的 a 覆盖掉。
15. 商和余数
OJ-ID: 1015 · 难度:⭐⭐⭐
进阶
输入两个整数 a 和 b(b ≠ 0),输出 a 除以 b 的商和余数。例如输入 10 3,输出 3 1。
💡 做题思路:整数除法用 / 得商,用 % 得余数。
#include <iostream>
using namespace std;
int main() {
    int a, b;
    cin >> a >> b;
    cout << a / b << " " << a % b << endl;
    return 0;
}
📝 解析:/ 在两个整数之间是"整除"(只取整数部分);% 是取余数。10/3=3,10%3=1。