B 班 第 1 课:搭环境 + 第一个 C++ 程序

适用对象: 学过四个学期 Python、第一次接触 C++ 的同学 使用方式: 自学讲义。全套 16 课,每课按 1.5 小时设计——照着讲义边读边敲,做完练习再进入下一课 学完本课,你应该能:

  1. 能在 Dev-C++ 里新建文件、保存、编译、运行
  2. 会背并解释 C++ 固定模板的每一行
  3. 能把 print / input 翻译成 cout / cin,写出读两个数、输出其和的完整程序
  4. 见过 3 种最常见的编译错误,知道怎么读错误信息

先读这一页

你已经学了两年 Python。学 C++ 不是从零开始学编程

你已经知道:

C++ 只是换了一种写法,加了几条新规矩。

这本讲义的每个知识点都这样呈现:

你在 Python 里这样写 → C++ 改成这样 → 只有这几个不同

你不需要忘掉 Python。把它当成翻译工具。

使用说明:

符号 含义
基础题,2 分钟内完成
⭐⭐ 实战题,5 分钟内完成
⭐⭐⭐ 冲刺题,给学有余力的同学
⚠️ 新手必看陷阱
📝 要点速记

1. 为什么要学 C++(5 分钟)

问题 回答
Python 不够用吗? 够用,但信息学竞赛(GESP、CSP-J)的主流语言是 C++
C++ 和 Python 谁快? 同样的程序 C++ 通常快 10~100 倍
Python 白学了吗? 完全没有。编程思维是通用的,你只是换个"外壳"

📝 一句话: Python 教会你"怎么想",C++ 教会你"怎么在比赛里写"。


2. 安装 Dev-C++(15 分钟,动手)

推荐版本:Dev-C++ 5.11(或 Dev-C++ TDM-GCC 64 位版)

安装完成后,四步跑通第一个程序:

  1. 打开 Dev-C++
  2. 菜单 → 文件 → 新建 → 源代码(快捷键 Ctrl+N)
  3. 先保存:Ctrl+S,文件名用英文,后缀必须是 .cpp(例如 lesson1.cpp
  4. F11(编译并运行)

⚠️ 别踩这个坑: 文件名和保存路径不要用中文,不要存在桌面上一个中文名文件夹里,否则有的电脑上编译会莫名失败。建议在 D 盘建一个 cpp 文件夹专门放代码。


3. 固定模板:C++ 程序的"外壳"(15 分钟)

Python 的程序可以只有一行。C++ 不行——任何 C++ 程序都要套在一个固定外壳里

#include <bits/stdc++.h>
using namespace std;

int main() {
    // 在这里写你的代码
    return 0;
}

逐行解释:

代码 作用 类比 Python
#include <bits/stdc++.h> 引入所有常用工具 一行顶所有 import
using namespace std; 允许直接写 cincout 类似 from ... import *
int main() { } 程序从这里开始运行 Python 最外层的代码
return 0; 告诉系统"正常结束" Python 不需要
// 注释 注释 # 注释

📝 背下来。 每次新建文件,先把这 6 行打上。本学期每节课上课前都会默写一次。

⚠️ 大括号 { } 就是 C++ 的缩进。 Python 用缩进表示"哪些代码属于谁",C++ 用 { } 包起来表示。C++ 里缩进只是为了好看,机器不看缩进,只看大括号


4. 输出:printcout(20 分钟)

Python 你这样写:

print("Hello, World!")
print("我叫小明,今年11岁")  # ← 换成你自己的!

C++ 改成这样:

#include <bits/stdc++.h>
using namespace std;

int main() {
    cout << "Hello, World!" << endl;
    cout << "我叫小明,今年11岁" << endl;   // ← 换成你自己的!
    return 0;
}

只有这几个不同:

输出多个东西,就连着 <<

#include <bits/stdc++.h>
using namespace std;

int main() {
    cout << "3 + 5 = " << 3 + 5 << endl;
    return 0;
}

运行结果:

3 + 5 = 8

Python 里的 print("3 + 5 =", 3 + 5) 用逗号分隔,C++ 里全部换成 << 串起来。

⚠️ 别踩这个坑: 代码里的引号、分号、括号必须是英文符号。中文引号 “” 会直接编译报错。写代码前先看一眼输入法是不是英文状态。


动手检查点 1(5 分钟)

新建 intro.cpp,输出三行自我介绍(姓名、年级、一个爱好)。编译运行成功,再往下读。


5. 变量:先声明,再使用(20 分钟)

Python 你这样写:

x = 10
price = 3.5
name = "xiaoming"

C++ 改成这样:

#include <bits/stdc++.h>
using namespace std;

int main() {
    int x = 10;
    double price = 3.5;
    string name = "xiaoming";
    cout << x << " " << price << " " << name << endl;
    return 0;
}

只有这几个不同:

类型 装什么 例子
int 整数 int age = 11;
double 小数 double price = 3.5;
string 文字 string name = "xiaoming";

📝 类型只在第一次出现时写。 之后再用这个变量,直接写名字:x = 20;(不要再写 int x = 20;,那是重复声明,会报错)。

还有 long long(超大整数)、char(单个字符)、bool(真假)——以后学


6. 输入:input()cin(15 分钟)

Python 你这样写:

n = int(input())
print(n * 2)

C++ 改成这样:

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    cout << n * 2 << endl;
    return 0;
}

只有这几个不同:

读多个数:

Python 你这样写:

a, b = map(int, input().split())
print(a + b)

C++ 改成这样:

#include <bits/stdc++.h>
using namespace std;

int main() {
    int a, b;
    cin >> a >> b;
    cout << a + b << endl;
    return 0;
}

7. 读错误信息:故意写错三次(10 分钟,自己动手把错做出来)

编译错误不可怕,它是编译器在告诉你哪里错了。请把下面三个错误故意做一遍,亲眼看看报错长什么样——以后再遇到就不慌了。习惯是:报错先自己读,读不懂再问人

错误 1:忘记分号(本学期你会犯 100 次的错)

#include <bits/stdc++.h>
using namespace std;

int main() {
    cout << "hello" << endl      ← 这行末尾少了 ;
    return 0;
}

编译器会说:error: expected ';' before 'return' (翻译:在 return 前面,我期待一个分号)

📝 编译器指出的行号,错误往往在它的上一行

错误 2:中文引号

#include <bits/stdc++.h>
using namespace std;

int main() {
    cout << “hello” << endl;     ← 用了中文引号 “ ”
    return 0;
}

编译器会说:error: stray '\342' in program (看到 stray 加一堆数字,几乎总是中文符号混进了代码

错误 3:少了大括号

#include <bits/stdc++.h>
using namespace std;

int main() {
    cout << "hello" << endl;
    return 0;
                                 ← 少了结尾的 }

编译器会说:error: expected '}' at end of input (翻译:读到文件末尾了,还缺一个 }


本课练习(20 分钟)

练习文件自己新建,文件名写在每题里。

⭐ 基础题 1:找错(不用电脑,先用眼睛)

下面的程序应该输出 你好,C++!,但有两处错误,请圈出来再改正:

#include <bits/stdc++.h>
using namespace std;

int main() {
    cout << "你好,C++!" << endl
    return 0
}
答案

cout 那行末尾缺 ;return 0 末尾也缺 ;

#include <bits/stdc++.h>
using namespace std;

int main() {
    cout << "你好,C++!" << endl;
    return 0;
}

⭐ 基础题 2:翻译(文件名 t2.cpp

把下面的 Python 程序翻译成 C++,编译运行验证:

print("我学了2年Python")
print("今天开始学C++")
参考答案
#include <bits/stdc++.h>
using namespace std;

int main() {
    cout << "我学了2年Python" << endl;
    cout << "今天开始学C++" << endl;
    return 0;
}

⭐⭐ 实战题:A+B(文件名 t3.cpp

输入两个整数 ab(同一行,空格分隔),输出它们的和。

输入样例:
3 5

输出样例:
8
参考答案
#include <bits/stdc++.h>
using namespace std;

int main() {
    int a, b;
    cin >> a >> b;
    cout << a + b << endl;
    return 0;
}

⭐⭐ 实战题:翻倍报数(文件名 t4.cpp

输入一个整数 n,按下面的格式输出它的 2 倍和 10 倍。

输入样例:
7

输出样例:
7 的 2 倍是 14
7 的 10 倍是 70
参考答案
#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    cout << n << " 的 2 倍是 " << n * 2 << endl;
    cout << n << " 的 10 倍是 " << n * 10 << endl;
    return 0;
}

⭐⭐⭐ 冲刺题:三数求最大(文件名 t5.cpp

输入三个整数,输出其中最大的一个。提示:C++ 自带 max(x, y) 函数,一次只能比两个数——想想怎么比出三个数的最大值。

输入样例:
3 7 5

输出样例:
7
参考答案
#include <bits/stdc++.h>
using namespace std;

int main() {
    int a, b, c;
    cin >> a >> b >> c;
    cout << max(a, max(b, c)) << endl;
    return 0;
}

先用 max(b, c) 比出后两个数的大者,再和 a 比一次。


本课要点速查

Python C++ 备注
print("abc") cout << "abc" << endl; endl 换行
print("x =", x) cout << "x = " << x << endl; 逗号换成 <<
n = int(input()) int n; cin >> n; 先声明类型
a, b = map(int, input().split()) int a, b; cin >> a >> b; 连读,更省事
x = 10 int x = 10; 第一次出现要写类型
price = 3.5 double price = 3.5; 小数用 double
name = "abc" string name = "abc"; 文字用 string
# 注释 // 注释
缩进表示层级 { } 表示层级 机器只看大括号
行末不加符号 行末加 ; 最高频错误
程序直接运行 必须套 int main() 外壳 6 行模板背下来

本课新函数/新符号: coutcin<<>>endlmax(x, y)intdoublestring//


结束前的自我检查

  1. 合上讲义,把固定模板 6 行默写出来,再对照检查(学下一课前要求能全对)
  2. 星级练习至少完成到 ⭐⭐
  3. 给家里人演示一遍"A+B"程序:他们报两个数,你的程序算出和——讲得清楚才算真会了