Skip to content

第 2 章 你的第一个程序


🏗️ 前情回顾:第 1 章你建立了一个重要的认知——计算机很笨,它只执行你给出的精确指令(IPO 模型)。现在你要亲手写下第一条指令。想象一下:你敲几个字,回车一按,屏幕上就出现了你写的东西。这不是魔法,这是你创造的。


🎯 本章目标

学完这一章,你能:

  • 在你的电脑上打开一个 IDE(集成开发环境)
  • 写出、编译、运行你的第一个 C++ 程序
  • 知道 #includeusing namespace stdint 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;
}

✅ 正确版如下——请对照着敲:

cpp
#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(输入输出流)。没有这一行,coutcin 就用不了——计算机不知道你说"输出"是什么意思。

可以把 #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!" 的时刻。

所以如果程序没跑起来,问自己两个问题:

  1. 编译通过了吗?(有没有红色错误提示?)
  2. 如果编译通过了,代码逻辑有没有问题?

2.5 注释:给人类看的笔记

代码里可以写字给自己看——这就是注释。注释不会被计算机执行,它纯粹是给人看的。

C++ 有两种注释:

cpp
// 这是单行注释。从双斜线到本行结束,都是给你的提醒。

/*
   这是多行注释。
   可以写很多行。
   计算机一律不理会。
*/

一个好习惯:从今天开始,你写的每一个程序,开头都用注释写上:

  • 这个程序是干什么的
  • 是谁写的
  • 什么时候写的

比如:

cpp
/*
 * 程序:Hello World
 * 用途:我的第一个 C++ 程序
 * 作者:你的名字
 * 日期:2026-06-04
 */

2.6 常见错误与排查

错 1:少写了分号

cpp
cout << "Hello"   // ← 忘了分号

编译器会说:expected ';' before ... ——它告诉你这里应该有个分号。

错 2:引号没配对

cpp
cout << "Hello;   // ← 右引号没了

编译器会报一串奇怪的错误。别被吓到——往往就是少了个引号。

错 3:大小写写错

cpp
Cout << "Hello";  // ← C 大写了

C++ 是区分大小写的。coutCout 是两个不同的东西。

错 4:中英文标点混用

cpp
cout << "Hello,World!"  // ← 中文逗号和中文分号!

这在初学者里极其常见。C++ 只认英文标点。中文的逗号 和英文的逗号 , 看起来几乎一样,但计算机认为它们完全不同。

⚠️ 写代码时请始终使用英文输入法。需要打中文时切到中文,打完立刻切回来。


✋ 动手试试

试试 1:把 "Hello, World!" 换成 "你好,世界!",重新运行。看到了什么?

试试 2:在 cout 那一行下面再加一行:

cpp
cout << "这是我的第一个 C++ 程序" << endl;

重新运行。你得到了什么?

试试 3:故意少写一个分号,编译。把错误提示读一遍(不用全懂,感受一下编译器是怎么"骂"你的)。然后把分号补回去。


⚠️ 你踩过这些坑吗

  • [ ] 坑 1:第一遍没看懂就要放弃 — 正常人的第一反应都是"这堆英文和符号是什么鬼"。没有人第一遍就全懂。先下水,再学泳姿。
  • [ ] 坑 2:复制粘贴代码 — 编程是肌肉记忆。复制粘贴一百遍,不如亲手敲十遍。
  • [ ] 坑 3:不读错误提示就直接问别人 — 编译器已经很努力告诉你哪里错了。试着读一读,哪怕只看懂了最后一行。养成自己排查的习惯。

📝 练习

基础题

1. 填空题

(1)把 C++ 代码翻译成机器语言的过程叫 _____。

(2)在 C++ 中,// 表示 _____ 注释,/* */ 表示 _____ 注释。

(3)cout 的作用是 _____。

(4)每个 C++ 程序都必须有一个 _____ 函数作为入口。

2. 代码改错

下面的代码有 3 个错误,找出来并改正:

cpp
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++ 中 coutCout 是一样的。( )

提高题

5. 简答题

用自己的话解释:为什么 #include <iostream> 是必须的?如果删掉这一行,会发生什么?试试看。

4. 编程题

写一个程序,让它在屏幕上分别显示三行文字:

我叫[你的名字]
今年[你的年龄]岁
我在学 C++ 编程

(提示:用三次 cout,每次后面跟 endl。)

6. 编程题

写程序在屏幕上输出你的"个人名片"——包含姓名、年龄、爱好,用多种字符画一个简单的边框。至少输出 5 行。

7. 分析题

下面这段代码有两个地方可以简化,试着指出并修改:

cpp
#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-B2002https://hydro.ac/p/luogu-B2002cout、换行、main结构
◆ 拓展luogu-B2025https://hydro.ac/p/luogu-B2025cout、多行输出、转义字符
◆ 拓展luogu-B2003https://hydro.ac/p/luogu-B2003cout、多个不同值输出
◆ 拓展luogu-P1000https://hydro.ac/p/luogu-P1000cout、大段文本、转义处理
◆ 拓展J0001https://hydro.ac/d/srqc/p/J0001cout + 简单表达式、衔接下一章

💡 练习建议:先完成 1 道★核心题,确保掌握本章基本方法;再完成 4 道◆拓展题,覆盖不同变式和细节。


配套练习

共5题。核心1题讲main+cout结构,拓展从单行→多行→大段→带表达式逐步推进。★核心(课堂必做) · ◆拓展(课后练习)

级别题号链接覆盖知识点
★ 核心luogu-B2002https://hydro.ac/p/luogu-B2002cout、换行、main结构
◆ 拓展luogu-B2025https://hydro.ac/p/luogu-B2025cout、多行输出、转义字符
◆ 拓展luogu-B2003https://hydro.ac/p/luogu-B2003cout、多个不同值输出
◆ 拓展luogu-P1000https://hydro.ac/p/luogu-P1000cout、大段文本、转义处理
◆ 拓展J0001https://hydro.ac/d/srqc/p/J0001cout + 简单表达式、衔接下一章

练习建议:先在课堂完成 1 道★核心题,掌握本章基本方法;课后完成 4 道◆拓展题,覆盖不同变式和细节。

自查清单

  • [ ] 我能打开 IDE 并新建一个 C++ 源文件
  • [ ] 我能写出 Hello World 程序,编译运行成功
  • [ ] 我知道每行代码的大概意思
  • [ ] 我知道编译和运行的区别
  • [ ] 我会写单行和多行注释
  • [ ] 我知道分号、大小写、中英文标点的重要性

🚀 下章预告:你会让程序输出文字了。但程序现在说完话就忘——下一章让它学会"记住东西":变量。