# C++ 输入 (`cin`) 讲义 ## 一、 程序只能算固定数据吗? 我们之前写的代码,所有的数字都是直接写在程序里的,比如 `int a = 5; int b = 3;`。这种写法把**数据写死**了。 大家思考一下,如果用户明天想算 `100 + 200` 怎么办?难道每次都要让程序员打开代码,改完数字再重新算一次吗?这显然是不现实的! 一个真正有价值的程序,应该是**智能的**——它能够随时接收用户提供的新数据,并自动计算出结果。今天,我们就要学习如何让程序接收用户提供的数据。 ## 二、 认识 `cin`:控制台的数据接收员 为了让程序接收用户的键盘输入,C++ 提供了一个强大的工具:**`cin`**。 * **含义**:**`cin`** 是 Console Input(控制台输入)的缩写, c 对应着 Console, in 对应着 input。 * **作用**:**让用户在黑框框里==用键盘==输入数据**,然后程序会自动把这个数据==存入==我们提前准备好的==变量==中。 * **`cin` 使用 >> 运算符跟上准备好的变量来接收用户输入**。 ### 1. `cin` 的运作过程 我们来看看 `cin` 是如何与我们之前学习的变量配合的: ```cpp int num; cin >> num; cout << num; ``` 1. **`int num;`** $\rightarrow$ 程序向内存申请了一个整数类型的空柜子,并在外面贴上名字标签 `num`。 2. **`cin >> num;`** $\rightarrow$ 程序==暂停运行==,等待用户操作。用户在键盘上敲下数字 `7` 并按下回车。**`>>`(称为提取符)**就像传送带一样,把键盘上的 `7` 抓过来,放进了名为 `num` 的抽屉里。 3. **`cout << num;`** $\rightarrow$ 获取名为 `num` 抽屉里的数据,并将其展示在屏幕上(输出 7)。 ### 2. 语法与规则 输入单个数据: **==语法格式==:** `cin >> 变量名;` 如果你想一次性让用户输入多个数据,那就需要准备多个变量,然后把传送带连起来用: **==语法格式==:** `cin >> 变量名 >> 变量名 >> 变量名;` (可以通过 `>> 变量名` 的格式继续扩展) ```cpp int a, b, c; cin >> a; // 接收用户输入的一个整数到变量 a 中 cin >> b >> c; // 依次接收用户输入的两个整数到变量 b, c 中 ``` > **输入规则:** > 当使用 `cin >> a >> b;` 时,用户在黑框框里输入数据,**必须使用“空格”或者“回车”来隔开两个数字**(比如输入 `5 10`)。`cin` 它只要一遇到空格或回车,就知道第一个数据输入结束了,准备把下一个数据放进第二个抽屉里。 --- ## 三、 解决题目中要求有输入的题目 现在我们拥有了所有的基础工具(变量、加减乘除、输入、输出)。接下来,我们要做一道完整的带有输入程序题。务必要记住: ==**"输入 -> 处理 -> 输出" 是完成程序题目的三个基本步骤。**== **题目描述:请你实现输入两个整数,输出这两个整数的差。** *(样例输入:2 3 $\rightarrow$ 样例输出:-1;样例输入:10 2 $\rightarrow$ 样例输出:8)* **分析思路**: 1. **提取有效信息**:题目需要什么?(**==输入两个数==** $\rightarrow$ 相减 $\rightarrow$ 输出结果)。 2. **整理思路**: * 准备两个变量(空抽屉)装输入的数。 * 用 `cin` 把用户敲的字放进抽屉。 * 处理数据:拿出来相减,结果放进第三个抽屉。 * 用 `cout` 展示第三个抽屉。 3. **将思路一步步翻译为C++ 代码**: ```cpp int num1, num2; // 准备抽屉 cin >> num1 >> num2; // 接收输入 int diff = num1 - num2; // 计算并存入新抽屉 cout << diff; // 输出结果 ``` 4. **编译运行**:按下 F11。如果有报错,不要慌,检查是不是漏了分号,或者 `>>` 和 `<<` 的方向写反了。 5. **输入测试数据,验证结果**:在弹出的黑框里输入测试用例 `2 3`,看看结果是不是 `-1`。 6. **修正错误**:如果输出不对(比如输出了 5),说明语法没问题,但是**逻辑错了**。回去检查代码,是不是把减号写成加号了?修改后重新测试,直到完全正确为止。