第 2 章 你的第一个程序
🏗️ 前情回顾:第 1 章你建立了一个重要的认知——计算机很笨,它只执行你给出的精确指令(IPO 模型)。现在你要亲手写下第一条指令。想象一下:你敲几个字,回车一按,屏幕上就出现了你写的东西。这不是魔法,这是你创造的。
🎯 本章目标
学完这一章,你能:
- 在你的电脑上打开一个 IDE(集成开发环境)
- 写出、编译、运行你的第一个 C++ 程序
- 知道
#include、using namespace std、int main()、return 0每行的意思 - 理解"编译"和"运行"是两个不同的步骤
- 学会用注释记录你的想法
📖 故事引入
如果你学游泳,第一课一定不是教你蝶泳。第一课是——下水。
编程也一样。不管你以后要写出多厉害的程序,第一件事永远是:打开电脑,敲一行代码,看到它在屏幕上显示出来。
今天我们就做这件事。
不需要理解全部细节。就像一个婴儿学说话,先会说"妈妈",而不是先学语法。你先看看 C++ 长什么样,感受一下"我写的东西在电脑上跑起来了"这种感觉。
这种感觉非常重要——它是你往后几百章的动力来源。
🧱 知识讲解
2.1 你需要准备什么
编程不需要一台超级电脑。任何能开机的电脑都行。你只需要两样东西:
第一样:一个 IDE
IDE(集成开发环境)就是你写代码的地方。它像一个高级版的记事本,但多了一些功能:帮你检查错误、一键运行程序、用不同颜色标记不同的代码部分。
对 C++ 初学者,推荐这几个:
| IDE | 特点 | 适合谁 |
|---|---|---|
| Dev-C++ | 轻量,安装即用 | 电脑配置不高、想省事 |
| Code::Blocks | 功能全,稳定 | 大部分竞赛选手 |
| VS Code | 插件丰富,界面现代 | 喜欢折腾、想自定义 |
如果你参加竞赛,一般考场用的是 Dev-C++ 或 Code::Blocks。建议装一个先熟悉。
第二样:一本愿意敲键盘的手
编程是手艺活,不是听书活。看一百行代码不如自己敲一行。从现在开始,书上的每一段代码,你都要亲手敲一遍——不要复制粘贴。
2.2 你的第一个程序:Hello, World!
打开你的 IDE,新建一个 C++ 源文件。然后,把下面这段代码一个字一个字敲进去。
⚠️ 先看看新手最容易写的"错误版"——对照一下你的代码有没有这些问题:
cpp// ❌ 错误版:你能找出几个 bug? include <iostream> // 少了 # using namespace std // 少了分号! int main() { cout << "Hello, World!" // 少了分号和 endl return 0; }
✅ 正确版如下——请对照着敲:
#include <iostream>
using namespace std;
int main() {
cout << "Hello, World!" << endl;
return 0;
}敲好了吗?现在点击"编译并运行"按钮(不同 IDE 位置不同,一般是工具栏上的 ▶ 按钮或 F11/F9 键)。
如果一切正常,屏幕上会出现一行字:
Hello, World!恭喜,你刚刚写完并运行了人生中第一个 C++ 程序。
如果你看到的是一个红色错误提示,别慌——检查一下是不是少敲了分号、引号,或者括号没配对。然后看 2.6 节。
2.3 逐行拆解
你刚刚敲了 6 行代码。现在我们来搞清楚每一行在干什么。
第 1 行:#include <iostream>
这行的意思是:"我要用到输入输出功能,请把相关的工具给我准备好"。
iostream = input / output stream(输入输出流)。没有这一行,cout 和 cin 就用不了——计算机不知道你说"输出"是什么意思。
可以把
#include想象成你做饭之前从柜子里拿锅碗瓢盆。不拿出来,你空手做不了饭。
第 2 行:using namespace std;
C++ 有一个叫做"标准命名空间"的东西,名字是 std。大部分常用工具都在这个空间里。如果不写这一行,你每次用 cout 都得写成 std::cout——多打 5 个字符。
这行代码的意思是:"把标准命名空间里的东西都拿出来直接用"。
现阶段你不需要深究命名空间是什么。就当它是一句必须写的"开场白"。
第 3 行:int main() {
这是程序的入口。每个 C++ 程序都必须有一个 main 函数。程序运行的时候,计算机会自动找到 main,从它的第一行开始执行。
int 是"整数"的意思——它说 main 函数最后要返回一个整数。
{ 左大括号是 main 函数的开始。
第 4 行:cout << "Hello, World!" << endl;
这是今天的主角。拆开看:
cout= c + out = "character output",字符输出。你把东西送进cout,它帮你显示到屏幕上。<<= 你可以把它想象成一个箭头,数据顺着箭头流过去。"Hello, World!"= 你要显示的文字。双引号里的东西会原样输出。endl= end line,换行。输出完这一行后把光标移到下一行。;= 分号,表示"这句话说完了"。C++ 里,每一句完整的指令都必须以分号结尾。
第 5 行:return 0;
return 是"返回"的意思。0 代表"一切正常,程序顺利结束"。这是一个约定——返回 0 等于告诉操作系统:"我完成任务了,没出错"。
第 6 行:}
右大括号。和第三行的 { 配对,表示 main 函数到这里结束。
2.4 编译 vs 运行
当你点击"运行"按钮的时候,实际上发生了两件事:
第一步:编译
编译器把你的 C++ 代码翻译成计算机能看懂的机器语言(0 和 1)。
如果代码有语法错误——比如你少写了一个分号——编译器就会报错,拒绝编译。这时候程序不会运行。
把编译器想象成一个严格的中文老师。你的作文里有一个错别字,他就不让你交卷——你得先把错改完。
第二步:运行
翻译通过了,计算机开始执行翻译后的机器语言指令。这才是你真正看到 "Hello, World!" 的时刻。
所以如果程序没跑起来,问自己两个问题:
- 编译通过了吗?(有没有红色错误提示?)
- 如果编译通过了,代码逻辑有没有问题?
2.5 注释:给人类看的笔记
代码里可以写字给自己看——这就是注释。注释不会被计算机执行,它纯粹是给人看的。
C++ 有两种注释:
// 这是单行注释。从双斜线到本行结束,都是给你的提醒。
/*
这是多行注释。
可以写很多行。
计算机一律不理会。
*/一个好习惯:从今天开始,你写的每一个程序,开头都用注释写上:
- 这个程序是干什么的
- 是谁写的
- 什么时候写的
比如:
/*
* 程序:Hello World
* 用途:我的第一个 C++ 程序
* 作者:你的名字
* 日期:2026-06-04
*/2.6 常见错误与排查
错 1:少写了分号
cout << "Hello" // ← 忘了分号编译器会说:expected ';' before ... ——它告诉你这里应该有个分号。
错 2:引号没配对
cout << "Hello; // ← 右引号没了编译器会报一串奇怪的错误。别被吓到——往往就是少了个引号。
错 3:大小写写错
Cout << "Hello"; // ← C 大写了C++ 是区分大小写的。cout 和 Cout 是两个不同的东西。
错 4:中英文标点混用
cout << "Hello,World!"; // ← 中文逗号和中文分号!这在初学者里极其常见。C++ 只认英文标点。中文的逗号 , 和英文的逗号 , 看起来几乎一样,但计算机认为它们完全不同。
⚠️ 写代码时请始终使用英文输入法。需要打中文时切到中文,打完立刻切回来。
✋ 动手试试
试试 1:把 "Hello, World!" 换成 "你好,世界!",重新运行。看到了什么?
试试 2:在 cout 那一行下面再加一行:
cout << "这是我的第一个 C++ 程序" << endl;重新运行。你得到了什么?
试试 3:故意少写一个分号,编译。把错误提示读一遍(不用全懂,感受一下编译器是怎么"骂"你的)。然后把分号补回去。
⚠️ 你踩过这些坑吗
- [ ] 坑 1:第一遍没看懂就要放弃 — 正常人的第一反应都是"这堆英文和符号是什么鬼"。没有人第一遍就全懂。先下水,再学泳姿。
- [ ] 坑 2:复制粘贴代码 — 编程是肌肉记忆。复制粘贴一百遍,不如亲手敲十遍。
- [ ] 坑 3:不读错误提示就直接问别人 — 编译器已经很努力告诉你哪里错了。试着读一读,哪怕只看懂了最后一行。养成自己排查的习惯。
📝 练习
基础题
1. 填空题
(1)把 C++ 代码翻译成机器语言的过程叫 _____。
(2)在 C++ 中,// 表示 _____ 注释,/* */ 表示 _____ 注释。
(3)cout 的作用是 _____。
(4)每个 C++ 程序都必须有一个 _____ 函数作为入口。
2. 代码改错
下面的代码有 3 个错误,找出来并改正:
include <iostream>
using namespace std;
int main() {
cout << "I can code!"
return 0;
}3. 选择题
(1)以下哪行代码是错误的? A. cout << "你好"; B. cout << 123; C. Cout << "你好"; D. cout << "A" << "B";
(2)using namespace std; 的作用是? A. 让程序跑得更快 B. 让 cout 可以直接用,不用写 std::cout C. 开启中文字符支持 D. 这是一个注释
4. 判断题
(1)// 是多行注释。( ) (2)编译就是把 C++ 代码翻译成机器语言。( ) (3)return 0; 可以省略,程序照样运行。( ) (4)C++ 中 cout 和 Cout 是一样的。( )
提高题
5. 简答题
用自己的话解释:为什么 #include <iostream> 是必须的?如果删掉这一行,会发生什么?试试看。
4. 编程题
写一个程序,让它在屏幕上分别显示三行文字:
我叫[你的名字]
今年[你的年龄]岁
我在学 C++ 编程(提示:用三次 cout,每次后面跟 endl。)
6. 编程题
写程序在屏幕上输出你的"个人名片"——包含姓名、年龄、爱好,用多种字符画一个简单的边框。至少输出 5 行。
7. 分析题
下面这段代码有两个地方可以简化,试着指出并修改:
#include <iostream>
using namespace std;
int main() {
cout << "你好";
cout << endl;
cout << "世界";
cout << endl;
return 0;
}挑战题
8. 编程题
写一个程序,用 cout 在屏幕上画出一个 ASCII 图案。比如一个三角形、一个爱心、或者一个表情。你可以用 *、#、- 等字符。至少画 5 行。
示例输出:
*
***
*****
*******
*
*9. 探究题
把你写的 Hello World 程序故意改错 3 次(比如删掉分号、改大小写、用中文标点),记录每次编译器给出的错误信息。然后总结:哪种错误最容易犯?编译器提示够不够清楚?
🧠 本章小结
#include <iostream> ← 拿工具(输入输出库)
using namespace std; ← 打开工具箱
int main() { ← 程序入口(大门)
cout << ... ← 输出(写在屏幕上)
return 0; ← 程序正常结束,关灯锁门
}📝 配套练习
共5题。核心1题讲main+cout结构,拓展从单行→多行→大段→带表达式逐步推进。。★核心(课堂必做) ◆拓展(课后练习)
| 级别 | 题号 | 链接 | 覆盖知识点 |
|---|---|---|---|
| ★ 核心 | luogu-B2002 | https://hydro.ac/p/luogu-B2002 | cout、换行、main结构 |
| ◆ 拓展 | luogu-B2025 | https://hydro.ac/p/luogu-B2025 | cout、多行输出、转义字符 |
| ◆ 拓展 | luogu-B2003 | https://hydro.ac/p/luogu-B2003 | cout、多个不同值输出 |
| ◆ 拓展 | luogu-P1000 | https://hydro.ac/p/luogu-P1000 | cout、大段文本、转义处理 |
| ◆ 拓展 | J0001 | https://hydro.ac/d/srqc/p/J0001 | cout + 简单表达式、衔接下一章 |
💡 练习建议:先完成 1 道★核心题,确保掌握本章基本方法;再完成 4 道◆拓展题,覆盖不同变式和细节。
配套练习
共5题。核心1题讲main+cout结构,拓展从单行→多行→大段→带表达式逐步推进。★核心(课堂必做) · ◆拓展(课后练习)
| 级别 | 题号 | 链接 | 覆盖知识点 |
|---|---|---|---|
| ★ 核心 | luogu-B2002 | https://hydro.ac/p/luogu-B2002 | cout、换行、main结构 |
| ◆ 拓展 | luogu-B2025 | https://hydro.ac/p/luogu-B2025 | cout、多行输出、转义字符 |
| ◆ 拓展 | luogu-B2003 | https://hydro.ac/p/luogu-B2003 | cout、多个不同值输出 |
| ◆ 拓展 | luogu-P1000 | https://hydro.ac/p/luogu-P1000 | cout、大段文本、转义处理 |
| ◆ 拓展 | J0001 | https://hydro.ac/d/srqc/p/J0001 | cout + 简单表达式、衔接下一章 |
练习建议:先在课堂完成 1 道★核心题,掌握本章基本方法;课后完成 4 道◆拓展题,覆盖不同变式和细节。
自查清单:
- [ ] 我能打开 IDE 并新建一个 C++ 源文件
- [ ] 我能写出 Hello World 程序,编译运行成功
- [ ] 我知道每行代码的大概意思
- [ ] 我知道编译和运行的区别
- [ ] 我会写单行和多行注释
- [ ] 我知道分号、大小写、中英文标点的重要性
🚀 下章预告:你会让程序输出文字了。但程序现在说完话就忘——下一章让它学会"记住东西":变量。