📌 计算机基础与第一个程序
所属等级:GESP 1级 | 难度: | 关键词:冯·诺依曼、存储单位、编译器、hello world
📝 考纲要求
- 了解计算机的发展与冯·诺依曼体系结构的基本思想;
- 认识硬件(CPU / 内存 / 硬盘)与软件的区别和各自作用;
- 掌握存储单位 bit / Byte 及 1KB = 1024B 的换算;
- 理解编译器的作用,能写出第一个 C++ 程序并编译运行。
📖 通俗讲解
💡 一句话理解
计算机由“运算 + 存储 + 控制”组成,遵循冯·诺依曼“程序存储”思想:把指令和数据都放进内存,CPU 一条条取出来执行。
硬件是看得见摸得着的设备:CPU 负责计算和控制,像大脑;内存 断电就丢、速度快,临时放正在用的数据;硬盘 断电不丢、速度慢,长期存文件。软件是让硬件干活的程序,分系统软件(如操作系统)和应用软件。
💡 存储单位
最小单位是 bit(位),只能存 0 或 1;8 个 bit 组成 1 个 Byte(字节)。注意计算机用二进制,所以
1KB = 1024B、1MB = 1024KB,不是 1000。
编译器是把我们写的“人话”C++ 代码翻译成 CPU 能懂的“机器语言”的工具。写好的源文件(.cpp)经编译、链接,才生成可运行的程序。
🖼️ 图解
键盘/鼠标 内存(程序+数据) 屏幕
| | ^ |
v v | v
+---------------------------------------------+
| CPU 中央处理器 |
| 控制器(取指令) 运算器(做计算) |
+---------------------------------------------+
冯·诺依曼:程序和数据都放进内存
C++
#include <iostream> // 1. 包含输入输出头文件
using namespace std; // 2. 使用标准命名空间
int main() { // 3. 程序入口,main 是起点
cout << "Hello, World!" << endl; // 4. 向屏幕输出一句话并换行
return 0; // 5. 返回 0 表示正常结束
}
输出Hello, World!
编译运行步骤(以命令行 g++ 为例):
终端
g++ hello.cpp -o hello # 编译生成可执行文件 hello
./hello # 运行程序
🔵 核心必背重点
✅ 必背
- 冯·诺依曼:程序和数据都存内存,CPU 顺序取指执行;
- CPU 算、内存 临时快、硬盘 长期慢;
- 1 Byte = 8 bit,1KB = 1024B(不是 1000);
- 编译器把 C++ 源文件变成可执行的机器程序;
- 每个 C++ 程序都有
int main() { ... }作为入口。
🔑
记忆口诀:“冯氏存程序,CPU 当大脑;内存快易丢,硬盘稳又慢;字节八个位,千二不是千;编译翻译官,main 是起跑线。”
🔴 考试拉分难点
⚠️ 难点
- 单位换算:1024 进制是考试常考点,常把 KB/MB/GB 当作 1000 进制而算错。
- CPU 与内存角色混淆:内存不是“永久仓库”,硬盘才是;CPU 不直接长期存数据。
- 源文件与可执行文件:写的是 .cpp 文本,必须经过编译才变成能双击运行的程序。
🟡 高频易错陷阱
🚫 扣分坑点
- 把
1KB当成 1000B,正确是 1024B; - 写程序漏掉
int main()或结尾的return 0;; - 误以为“编译”就是“运行”,其实编译通过也要再运行才能看到结果;
- 用中文引号、全角分号,编译器一堆报错。
🧪 例题演练
例题 1(基础题):单位换算
题目:1 MB 等于多少 Byte?请写出换算过程。
解答
1 KB = 1024 B
1 MB = 1024 KB = 1024 × 1024 B = 1048576 B
所以 1 MB = 1048576 Byte
答案1048576 Byte
例题 2(模拟真题):第一个程序的输出
题目:下面程序编译运行后会输出什么?
C++
#include <iostream>
using namespace std;
int main() {
cout << "GESP" << " " << "1" << endl;
return 0;
}
输出GESP 1
🚫 错误示范
cout << GESP; —— 把字符串 GESP 漏写双引号,编译器会把它当成变量名,因未定义而报错。字符串必须用双引号 "GESP" 包住。
🛡️ 避坑总结
- 冯·诺依曼思想:程序和数据存内存,CPU 顺序执行;
- CPU 计算、内存临时、硬盘长期,三者角色分清;
- 存储用 1024 进制:1KB=1024B,1MB=1024KB;
- 编译器把 .cpp 翻译成可执行程序,编译 ≠ 运行;
- 每个程序必须有
int main()和return 0;,字符串加双引号。
💡 提示:按 ← → 方向键可在上一 / 下一知识点间快速翻页