Files

83 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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),说明语法没问题,但是**逻辑错了**。回去检查代码,是不是把减号写成加号了?修改后重新测试,直到完全正确为止。