NOI C++ 课程体系 / 计算机基础 / 第1讲
CSP-J 入门级 · 计算机基础 · 程序的基本概念专题

C++ 程序的基本概念 完全指南

让计算机按你的指令做事 —— 从阿达的第一个程序到 Hello World,从语法解剖到书写规范,一站式迈出编程第一步。

6 大教学模块 5 个精讲案例 3 道实践题 5 大易错点 1 张速查表 15 道分层练习
本讲 · 第 5/56 讲程序的基本概念
模块 01

情景导航

先用历史故事和生活中的场景建立直觉,再给出程序与编程的严谨定义,最后用表格和口诀把核心要点固化下来。

故事故事引入 —— 阿达与世界上第一个"程序"

19 世纪的英国,有一位数学家名叫巴贝奇,他耗尽半生心血设计了一台庞大的机器——"分析机"。这台机器由齿轮和杠杆组成,据说能自动完成复杂的数学计算。可惜因为工艺限制,它始终没有被完整造出来。

"机器造不出来,那写给它执行的指令还有意义吗?"

有一位年轻人坚定地回答:有!她就是阿达·洛芙莱斯(Ada Lovelace)。1843 年,她为分析机写下了一份详细的计算步骤——用来计算"伯努利数"。这份写在纸上的步骤清单,后来被全世界公认为 人类历史上第一个"程序",阿达也被称为"世界上第一位程序员"。

一百多年后,美国国防部为了纪念她,把一门重要的编程语言命名为 Ada。如今,每年 10 月的第二个星期二还被定为"阿达·洛芙莱斯日",纪念女性在科技领域的贡献。

💡 这个故事告诉我们什么?

阿达的"程序"写在纸上,分析机甚至没有真正运行过它。但这不妨碍它被称为程序。因为:

程序的本质不是"能运行的软件",而是"一份按步骤解决问题的指令清单"。

就像菜谱写出来时还没有开始做菜,乐谱写出来时还没有开始演奏——先有指令,后有执行。我们写程序,就是把解决问题的步骤,用计算机能懂的语言,一步一步写清楚。

类比生活类比 —— 程序就在你身边

其实,你每天都在和"程序"打交道,只是没有意识到。看看下面这些例子:

🍳

菜谱

菜谱把做菜的步骤写得清清楚楚:先放油,再放菜,最后放盐。厨师照着做就能做出菜。菜谱就是"程序",厨师就是"计算机"。

对应:程序与执行
📖

组装说明书

新家具的说明书规定了每一步:先拧螺丝 A,再装板 B。顺序错了就装不起来。步骤的顺序很重要。

对应:程序按顺序执行
🗣️

翻译官

外国朋友说英语,你听不懂,需要翻译官翻成中文。计算机也听不懂人话,编程语言就是人和计算机之间的"翻译官"。

对应:编程语言的作用
🎹

自动钢琴

自动钢琴按纸卷上打好的孔演奏音乐。孔的位置就是指令,纸卷就是"程序"。机器只会严格执行写好的指令,不会自己发挥。

对应:计算机忠实执行指令
①编程定义 —— 什么是程序、编程、编程语言

有了直觉,我们来下严谨的定义:

概念定义通俗理解
程序(Program)计算机为完成特定任务而执行的一组指令的集合写给计算机看的"菜谱"
编程(Programming)编写程序的过程,即用编程语言描述解决问题的步骤"写菜谱"这个动作
编程语言人与计算机交流的工具,既有语法规则又能被翻译成机器指令人和计算机之间的"翻译官"

编程语言是怎么演进的?从"机器看得懂"到"人写得舒服",共经历了三个阶段:

阶段语言类型写法示例特点
第一代机器语言10110000 01100001只有 0 和 1,机器直接执行,人极难读写
第二代汇编语言MOV AL, 61h用英文缩写代替 0 和 1,仍需逐条翻译成机器码
第三代高级语言cout << "Hello";接近自然语言和数学式,需要编译或解释执行,如 C++、Python

我们学习的 C++ 就是一门高级语言:写起来接近人类的表达习惯,再通过"编译器"翻译成计算机能执行的机器指令。

③核心要点 —— C++ 程序"四件套"口诀

先记住 C++ 程序的四个固定组成部分,它们就像建房子的地基,几乎每个程序都少不了:

记忆口诀

头文件 #include 打头阵,工具箱里取工具;
using namespace std; 跟在后,标准名字直接用;
int main() 是大门,程序从这里开始走;
函数体里写语句,return 0; 圆满收!

🚀 直觉建立完毕!接下来我们打开真正的 C++ 程序,看看"四件套"在代码里长什么样。

模块 02

知识探究

解剖第一个完整的 C++ 程序,弄清从源代码到运行结果的完整流程,并通过 5 个由浅入深的案例熟悉输出语句。

1语法详解 —— Hello World 程序的"解剖"

世界上最经典的程序,非 Hello World 莫属。它虽然只输出一行字,却包含了 C++ 程序的完整结构:

#include <iostream>
using namespace std;
int main() {
    cout << "Hello World" << endl;
    return 0;
}
① 头文件:引入输入输出工具箱 ② 命名空间:使用标准库的名字 ③ main 函数:程序唯一的入口 ④ 函数体:具体执行的语句
逐行解读

第 1 行:#include <iostream> —— "把输入输出工具箱搬来",cout、cin 都在里面;
第 2 行:using namespace std; —— "以后标准库里的名字直接用",省去前缀;
第 3 行:int main() —— 程序的大门,一切执行从 main 开始;
第 4 行:cout << ... —— 输出语句,把内容送到屏幕;
第 5 行:return 0; —— 告诉系统"程序正常结束"。

🎬 动画演示:从源代码到运行结果的旅程

1
编写 源程序 hello.cpp —— 用编辑器把代码保存成文件
2
编译 —— 编译器逐行检查语法,发现错误就报错并停止
3
编译通过,生成 可执行程序 hello.exe(机器指令)
4
运行 —— 双击或输入命令执行,CPU 逐条执行机器指令
5
屏幕上输出 Hello World ✅ 程序完成使命,返回 0
2相关规则 —— C++ 程序的书写规范

C++ 对书写格式有严格要求,以下四条规则必须从今天起养成习惯:

规则说明示例
语句以分号结束每条执行语句末尾必须有英文分号 ;,它是语句的"句号"cout << "Hi";
大小写敏感main 和 Main 是两个不同的名字,关键字不能写错大小写int main() ✅ / int Main() ❌
符号必须是英文分号、括号、引号都必须是英文半角符号; ✅ / ; ❌
括号成对、适当缩进每个 { 必须有对应的 };函数体内的语句向右缩进,便于阅读{ 与 } 配对

补充:C++ 对换行和空格不敏感,一条语句可以写成多行,多条语句也不能靠换行区分——所以分号才是语句结束的唯一标志。

3易混淆概念对比 —— 编译 vs 运行、源程序 vs 可执行程序
对比项源程序(.cpp)可执行程序(.exe)
内容人能读懂的 C++ 代码机器执行的 0/1 指令
产生方式用编辑器编写由编译器翻译源程序生成
能否直接运行不能,必须先编译能,双击即可运行
修改后重新编辑即可必须重新编译才能得到新版本
对比项编译运行
做什么把源代码翻译成机器指令,检查语法错误执行翻译好的指令,产生结果
出错表现报"语法错误"(error),无法生成 exe结果不对或中途闪退(逻辑错误)
先后关系先编译,后运行;改了代码必须重新编译再运行

案例 1:Hello World —— 第一个完整程序

题目:编写程序,在屏幕上输出 Hello World。

C++Hello World
#include <iostream>
using namespace std;

int main(){
    cout << "Hello World" << endl;
    return 0;
}
运行结果
Hello World

解读:cout 是"输出"命令,<< 像传送带把右边的内容送上屏幕;双引号里的文字会原样输出;endl 表示换行。

案例 2:多行输出 —— 输出两行欢迎语

题目:输出两行文字:第一行 "欢迎学习 C++",第二行 "一起加油!"。

C++多行输出
#include <iostream>
using namespace std;

int main(){
    cout << "欢迎学习 C++" << endl;
    cout << "一起加油!" << endl;
    return 0;
}
运行结果
欢迎学习 C++
一起加油!

关键点:每写一个 endl,输出就换一行。想输出几行,就用几个 endl(或 \n)。

案例 3:原样输出与计算输出 —— 引号的魔法

题目:对比两条语句的输出差异:带引号的 "1+2" 和不带引号的 1+2。

C++原样输出与计算输出
#include <iostream>
using namespace std;

int main(){
    cout << "1+2" << endl;  // 带引号:字符串,原样输出
    cout << 1+2 << endl;       // 不带引号:表达式,先计算再输出
    return 0;
}
运行结果
1+2
3

结论:双引号里的内容是"字符串",计算机只会照抄;不带引号的算式,计算机会先算出结果再输出。

案例 4:现场捉虫 —— 这段代码为什么编译不过?

题目:下面这段代码藏着 3 个错误,你能全部找出来吗?

有虫的代码
include <iostream>
using namespace std;

int mian(){
    cout << "Hello" << endl
    return 0;
}
捉虫结果
虫 1:第 1 行少了 #,应为 #include;
虫 2:main 写成了 mian,程序找不到入口;
虫 3:endl 后面少了分号 ;。
正确写法
#include <iostream>
using namespace std;

int main(){
    cout << "Hello" << endl;
    return 0;
}

案例 5:注释的使用 —— 写给读代码的人看

题目:在代码中加入注释,说明每行代码的作用。注释不会被执行。

C++注释示例
#include <iostream>   // 单行注释:引入输入输出库
using namespace std;

/* 这是多行注释
   可以写很多行说明 */
int main(){
    cout << "注释不会被执行" << endl;  // 只有这行会输出
    return 0;
}
运行结果
注释不会被执行

要点:// 注释一行,/* */ 注释一片。良好的注释习惯能让代码更易读、更好调试,是优秀程序员的基本功。

模块 03

实践应用

用刚学会的 cout 输出语句解决三个实际小任务,巩固"四件套"结构与书写规范。

题1输出星号直角三角形

题目描述:编写程序,在屏幕上输出一个 5 行的星号直角三角形(第 1 行 1 个星号,第 2 行 2 个,依次递增)。

输出样例:

*
**
***
****
*****
提示:每行是一条 cout 语句,行内星号写在双引号里,行末用 endl 换行。循环的方法将在第 5 讲学习,今天先手动写 5 行。
点击查看参考答案
C++参考代码
#include <iostream>
using namespace std;

int main(){
    cout << "*" << endl;
    cout << "**" << endl;
    cout << "***" << endl;
    cout << "****" << endl;
    cout << "*****" << endl;
    return 0;
}
说明:5 条 cout 语句各输出一行。等学到 for 循环后,这 5 行可以压缩成 3 行——这就是循环的威力。
题2制作个人名片

题目描述:用输出语句制作一张文字名片,包含姓名、年龄、爱好三行信息,并用星号围成边框。

输出样例:

****************
* 姓名:小明   *
* 年龄:10     *
* 爱好:编程   *
****************
提示:先算好每行星号的个数保持一致;名字部分换成自己的信息即可。
点击查看参考答案
C++参考代码
#include <iostream>
using namespace std;

int main(){
    cout << "****************" << endl;
    cout << "* 姓名:小明   *" << endl;
    cout << "* 年龄:10     *" << endl;
    cout << "* 爱好:编程   *" << endl;
    cout << "****************" << endl;
    return 0;
}
说明:输出字符串时,空格也是字符,会原样显示;想让名片整齐,上下边框的字符数要对齐。
题3捉虫挑战 —— 修复这段程序

题目描述:下面这段程序想输出 "I love C++",但无法通过编译,请找出全部错误并改正。

待修复
#include <iostream>
using namespace std

int Main( ){
    cout << "I love C++"
    return 0;
}
错误分析
① using namespace std 后缺分号;
② Main 应为 main(大小写敏感);
③ cout 语句末尾缺分号。
正确写法
#include <iostream>
using namespace std;

int main(){
    cout << "I love C++" << endl;
    return 0;
}
模块 04

总结提升

把本节知识沉淀为"万能骨架 + 核心要点表",再通过一题多解打开思路。

总核心要点总结 —— C++ 程序万能骨架

无论程序多复杂,都长在这副"骨架"上:

C++万能骨架
#include <iostream>      // 1. 头文件:引入工具箱
using namespace std;   // 2. 命名空间:标准库直呼其名

int main(){            // 3. 主函数:唯一入口
    // 4. 函数体:在这里写语句
    return 0;           // 5. 正常结束
}
知识点核心内容
1. 程序计算机执行的一组指令的集合,先编写、后编译、再运行
2. 编程语言人与计算机交流的翻译官,C++ 属于高级语言
3. 头文件#include <iostream> 引入输入输出功能
4. 主函数int main() 是程序唯一入口,必须且只能有一个
5. 输出语句cout << 内容; 双引号内原样输出,不带引号先计算
6. 换行endl 或 \n 让输出换行
7. 分号每条语句以英文分号结束,符号必须英文半角
8. 编译运行源程序 → 编译 → 可执行程序 → 运行出结果
拓拓展案例 —— 一题多解:输出两行文字的三种写法

题目:输出两行:第一行 A,第二行 B。下面三种写法都正确:

写法代码核心特点
方法一:两条 coutcout << "A" << endl;
cout << "B" << endl;
最直观,一行一条语句
方法二:链式输出cout << "A" << endl << "B" << endl;一条语句搞定,<< 可以一直接
方法三:\n 换行符cout << "A\nB\n";最简洁,\n 是转义换行符

💡 引入思考

三种写法殊途同归。编程题往往不止一种正确答案——在保证正确的前提下,追求更清晰、更简洁的表达,是程序员进阶的必经之路。

思思考与启发

🤔 留给你的思考

如果要输出一首 100 行的诗,难道要写 100 条 cout 语句吗?有没有办法让计算机"自动重复"?——带着这个问题进入后续课程,第 5 讲 for 循环将给你答案。

模块 05

学习检测

盘点初学者最常踩的 5 个坑,配上速查表和速记卡,帮你把基础打牢。

坑5 大易错点
错误 1

使用中文分号

错误代码
cout << "Hello" ;
报错原因
中文分号 ; 不是 C++ 的合法符号,编译器无法识别,直接报语法错误。
正确写法
cout << "Hello" ;
预防口诀:标点符号要英文,中文分号编译停。
错误 2

main 函数拼错或大小写错误

错误代码
int Main(){
    cout << "Hi";
}
报错原因
C++ 区分大小写,Main、mian、mian() 都不是程序入口,链接时会报"找不到 main"。
正确写法
int main(){
    cout << "Hi";
}
预防口诀:main 全小写四字母,入口唯一别马虎。
错误 3

忘记写 #include <iostream>

错误代码
int main(){
    cout << "Hi";
    return 0;
}
报错原因
cout 定义在 iostream 头文件里,没引入头文件,编译器就不认识 cout,报"未声明"错误。
正确写法
#include <iostream>
using namespace std;
int main(){
    cout << "Hi";
    return 0;
}
预防口诀:要用 cout 先搬箱,include 写在最上方。
错误 4

大括号不成对

错误代码
int main(){
    cout << "Hi";
    return 0;
(此处缺少右括号 })
报错原因
每个 { 必须有对应的 }。漏写右括号,编译器会报"缺少 }"或语法错误。
正确写法
int main(){
    cout << "Hi";
    return 0;
}
预防口诀:左括号写右跟上,成对出现才稳当。
错误 5

改了代码忘记重新编译

错误做法
修改了 .cpp 源代码,却直接双击旧的 exe 运行,看到的还是旧结果,以为是代码没生效。
原因分析
运行的是编译生成的 exe,不是源代码。源文件改了,exe 不会自动更新。
正确做法
每次修改代码后:保存 → 重新编译 → 再运行。Dev-C++ 等环境按 F11 一键完成。
预防口诀:改完代码先编译,再跑结果才给力。
查速查表 —— 本节符号与关键词
符号 / 关键词名称作用
#include预处理指令引入头文件,如 <iostream>
using namespace std;命名空间声明直接使用标准库中的名字
int main()主函数程序唯一入口
{ }大括号界定函数体的开始与结束
cout输出流向屏幕输出内容
<<插入运算符把右侧内容送入 cout
endl换行操纵符输出后换行
;英文分号语句结束标志
// 与 /* */注释解释代码,不参与执行
return 0;返回语句结束 main 函数,报告正常退出
📌知识点笔记 —— 速记卡
程序 = 指令清单

程序是一组让计算机执行特定任务的指令集合,先写、后编译、再运行。

C++ 是高级语言

接近自然语言与数学式,需要编译成机器指令才能执行。

四件套结构

#include 头文件、using namespace std;、int main()、return 0;。

main 是唯一入口

全小写,有且仅有一个,程序从它开始执行。

cout << 输出

双引号内容原样输出,不带引号的算式先计算再输出。

分号是句号

每条语句以英文 ; 结束,中文符号一律非法。

课后练习

练习作业

巩固程序的基本概念与输出语句,分层练习,点击展开答案与解析。

总结练习3 道综合题
总结 1 输出问候语

题目:编写一个完整程序,输出 "Good morning, NOI!"

要求包含头文件、命名空间、主函数等完整结构。

提示:默写"四件套"骨架,cout 输出字符串记得加双引号。
点击查看参考答案与解析
C++参考代码
#include <iostream>
using namespace std;

int main(){
    cout << "Good morning, NOI!" << endl;
    return 0;
}
说明:完整的程序结构比输出内容更重要,这是本课的基本功。
总结 2 图形输出

题目:输出一个由字母组成的小旗子图形(共 4 行)

输出样例:

C
CC
CCC
----
提示:每行一条 cout;最后一行用减号做旗杆底座。
点击查看参考答案与解析
C++参考代码
#include <iostream>
using namespace std;

int main(){
    cout << "C" << endl;
    cout << "CC" << endl;
    cout << "CCC" << endl;
    cout << "----" << endl;
    return 0;
}
总结 3 判断正误

题目:判断下列说法的对错,并说明理由

① 程序写好后可以直接运行。

② 一个程序可以有多个 main 函数。

③ cout << "3+5"; 的输出结果是 8。

提示:回顾"编译与运行""main 唯一""引号原样输出"三个知识点。
点击查看参考答案与解析

① 错。源程序必须先编译成可执行程序才能运行。

② 错。main 函数是程序唯一入口,只能有一个。

③ 错。双引号里的 "3+5" 是字符串,原样输出 3+5;不带引号的 3+5 才会输出 8。

A组基础巩固(4 题)
A1 基础 输出练习

题目:输出 "Hello, NOI!"

要求:写出完整程序,输出结果只有一行。

提示:直接套用万能骨架,把输出内容换成题目要求的文字。
点击查看参考答案与解析
C++参考代码
#include <iostream>
using namespace std;

int main(){
    cout << "Hello, NOI!" << endl;
    return 0;
}

易错:输出语句末尾漏掉分号是最常见的编译错误;另外引号、分号必须用英文半角,写成中文全角字符编译器会直接报错。

A2 基础 多行输出

题目:输出两行自我介绍

输出样例:

大家好,我是信息学小选手。
这学期我要学会 C++!
提示:两行内容就写两条 cout,各自带 endl。
点击查看参考答案与解析
C++参考代码
#include <iostream>
using namespace std;

int main(){
    cout << "大家好,我是信息学小选手。" << endl;
    cout << "这学期我要学会 C++!" << endl;
    return 0;
}

易错:两行之间忘记用 endl 换行(或漏写第二条 cout),文字就会连成一行。

A3 基础 符号图形

题目:用加号输出一个空心的"方框"(3 行)

输出样例:

+++++
+   +
+++++
提示:中间一行加号之间是 3 个空格,空格也会原样输出。
点击查看参考答案与解析
C++参考代码
#include <iostream>
using namespace std;

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

易错:中间那行的两个加号之间有一个空格,这个空格是字符串的一部分,漏写就画不出空心效果。

A4 基础 程序结构填空

题目:补全下面的程序,使其输出 "OK"

C++补全程序
_______  <iostream>   // (1) 补全预处理指令
using _______ std;    // (2) 补全关键字

int _______(){        // (3) 补全函数名
    cout << "OK" << endl;
    return 0;
}
提示:回忆"四件套"口诀:头文件、命名空间、主函数、返回。
点击查看参考答案与解析
C++完整参考代码
// A4:补全后的完整程序(三个空用注释标出)
#include <iostream>          // (1) ← 这里填 #include
using namespace std;         // (2) ← 这里填 namespace
int main(){                  // (3) ← 这里填 main
    cout << "OK" << endl;
    return 0;
}

答案:(1) #include;(2) namespace;(3) main。补全后运行,屏幕输出 OK。

思路:程序骨架就是「四件套」口诀——头文件、命名空间、主函数、返回。#include <iostream> 引入输入输出;using namespace std; 让 cout 能直接使用;主函数名字固定写作 main。

考点:本讲「C++ 程序的基本结构」——任何 C++ 程序都从 main 开始执行。

易错:namespace 极易拼成 namespacee 或 namespaces;主函数写成 Main 或 mian(C++ 区分大小写,会报 undefined reference to main);以及漏写行末的分号。

B组能力提高(4 题)
B1 提高 综合输出

题目:制作一张带边框的课程表头

输出样例:

================
| 我的 C++ 课表 |
================
提示:等号行的字符数保持一致,竖线用英文 |。
点击查看参考答案与解析
C++参考代码
#include <iostream>
using namespace std;

int main(){
    cout << "================" << endl;
    cout << "| 我的 C++ 课表 |" << endl;
    cout << "================" << endl;
    return 0;
}

易错:三行边框的等号个数必须一致,否则上下边框长短不一,看起来歪歪扭扭。

B2 提高 计算输出

题目:让计算机算出并输出 12 × 8 的结果

要求:输出形式为 12x8=96(前半部分原样输出,结果让计算机计算)。

提示:一条 cout 可以串多段:字符串原样输出,算式不带引号。
点击查看参考答案与解析
C++参考代码
#include <iostream>
using namespace std;

int main(){
    cout << "12x8=" << 12*8 << endl;
    return 0;
}
说明:输出结果:12x8=96。字符串 "12x8=" 原样显示,12*8 由计算机算出 96。

易错:把 12*8 也用引号括起来,程序会原样输出 12*8,而不是算出来的 96。

B3 提高 调试练习

题目:修复下面无法编译的程序

C++待修复程序
#include iostream
using namespace std;

int main()
    cout << "Debug" << endl;
    return 0;
}
提示:逐行对照书写规则:头文件写法、中文符号、大括号、分号。
点击查看参考答案与解析
C++参考代码
#include <iostream>
using namespace std;

int main(){
    cout << "Debug" << endl;
    return 0;
}
说明:共 3 处错误:① iostream 应写成 <iostream>;② std 后是中文分号,应为英文;③ main() 后缺左括号 {;④ 找一找还有没有遗漏的分号问题。

易错:中文全角的分号、括号是调试题的常客:它们长得像英文符号,编译器却一律报错,改错时先检查标点是否为半角。

B4 提高 转义字符

题目:只写一条 cout 语句,输出两行文字

要求:第一行 "Practice",第二行 "Makes Perfect",且只能写一条 cout。

提示:用 \n 换行符代替 endl,把两行内容写进同一个字符串。
点击查看参考答案与解析
C++参考代码
#include <iostream>
using namespace std;

int main(){
    cout << "Practice\nMakes Perfect\n";
    return 0;
}
说明:\n 是转义字符,表示换行。一条语句也能输出多行。

易错:把 \n 写成 /n 不会换行,写成 \\n 则会多输出一个反斜杠,转义字符的反斜杠方向不能反。

C组拓展挑战(4 题)
C1 挑战 ASCII 艺术

题目:用字符画一枚"小火箭"

自由发挥,至少 5 行,可用 /、\、|、*、- 等符号。

提示:先在纸上画出样子,再一行一行转成 cout;注意反斜杠要写在字符串里。
点击查看参考答案与解析
C++参考代码(示例之一)
#include <iostream>
using namespace std;

int main(){
    cout << "  /\\  " << endl;
    cout << " /  \\ " << endl;
    cout << " |  | " << endl;
    cout << " |  | " << endl;
    cout << " /--\\ " << endl;
    return 0;
}
说明:字符画的关键是空格对齐。你能画出更复杂的图案吗?

易错:画图用的反斜杠是转义字符,必须写成 \\ 才能输出一个 \,只写一个会让编译器以为后面还跟着转义符而报错。

C2 挑战 实验探究

题目:去掉 endl 会怎样?动手试一试

把案例 2 中所有 endl 去掉,编译运行,观察输出发生了什么变化,并解释原因。

提示:endl 的作用是换行,去掉之后所有输出会连在一起。
点击查看参考答案与解析

现象:两行文字连成一行输出 "欢迎学习 C++一起加油!"。

原因:没有 endl(或 \n),cout 不会换行,所有内容依次排在同一行。

易错:去掉 endl 后两段文字会挤在同一行,中间不留任何空隙,阅读时很容易以为程序没输出完整。

C3 挑战 制表对齐

题目:输出一个对齐的购物清单

输出样例:

物品    数量    单价
苹果    2       5元
铅笔    10      1元
提示:用空格控制每列的宽度,让上下对齐。
点击查看参考答案与解析
C++参考代码
#include <iostream>
using namespace std;

int main(){
    cout << "物品    数量    单价" << endl;
    cout << "苹果    2       5元" << endl;
    cout << "铅笔    10      1元" << endl;
    return 0;
}
说明:更高级的对齐工具(如 setw)会在后面的课程中学习。

易错:靠空格手工对齐时列的宽度要看齐,某一行多打或少打一个空格,整列就会错位。

C4 挑战 创意名片

题目:设计一张属于自己的"程序员名片"

要求:有边框、至少 4 行内容、包含名字和一句座右铭,全部用 cout 输出。

提示:先设计再编码:画出草稿,数清每行字符数,让边框对齐。
点击查看参考答案与解析
C++参考代码(示例之一)
#include <iostream>
using namespace std;

int main(){
    cout << "+----------------+" << endl;
    cout << "|  小小程序员    |" << endl;
    cout << "|  座右铭:      |" << endl;
    cout << "|  代码改变世界  |" << endl;
    cout << "+----------------+" << endl;
    return 0;
}
说明:把作品截图保存,下节课和同学比比谁的名片最有创意!

易错:边框每行的字符数必须一样,加号与横线的数量要事先数清楚,否则右边界参差不齐。