Initial commit: C++ courseware
This commit is contained in:
commit
4a4ee7c287
1789 files changed
+373489
No files matched your search
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,82 @@
|
||||
# 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),说明语法没问题,但是**逻辑错了**。回去检查代码,是不是把减号写成加号了?修改后重新测试,直到完全正确为止。
|
||||
Binary file not shown.
@@ -0,0 +1,37 @@
|
||||
### **C++ `cin` 输入 课后习题 - 答案**
|
||||
|
||||
#### **一、 填空题**
|
||||
|
||||
1. Console Input (或 控制台输入)
|
||||
2. `>>` , 提取运算符
|
||||
3. 输入 , 处理
|
||||
4. 暂停 (或 阻塞)
|
||||
5. 空格 , 回车
|
||||
6. 定义
|
||||
7. 放进
|
||||
|
||||
#### **二、 单项选择题**
|
||||
|
||||
1. **D**. `cin` 的核心就是获取键盘输入。
|
||||
2. **C**. `cin` 使用提取运算符 `>>`,方向是从 `cin` 流向变量。
|
||||
3. **C**. 链式输入使用 `>>` 连接多个变量。
|
||||
4. **C**. `cin` 默认使用空白字符(空格、回车等)作为分隔符,逗号不是空白字符,无法正确分割。
|
||||
5. **B**. `cin` 使得程序可以处理运行时才给定的数据,变得通用和灵活。
|
||||
6. **B**. 程序先定义变量,然后通过 `cin` 获取值,再进行计算和输出,是完整的“输入-处理-输出”流程。
|
||||
7. **C**. 两种写法在功能上完全相同,都能读取两个变量,但链式写法更为常用和简洁。
|
||||
8. **B**. 程序能运行但结果不对,说明语法正确(不是CE),但计算或处理的思路(逻辑)错了。
|
||||
9. **B**. `cin >> a;` 只会读取一个整数。它读到 `5`,遇到空格,就认为第一个数的输入结束了,所以 `a` 的值是 `5`。`6` 会留在输入缓冲区中等待下一次 `cin` 读取。
|
||||
10. **C**. `int a, b;` 定义变量,`cin >> a >> b;` 使程序暂停,等待输入。
|
||||
|
||||
#### **三、 判断题**
|
||||
|
||||
1. × ( `c` 代表 "Console" (控制台)。)
|
||||
2. √ (必须先准备好“抽屉”,才能往里面放东西。)
|
||||
3. √ (`cin` 是输入,`cout` 是输出,方向和作用都相反。)
|
||||
4. √ (`cin` 在读取数据前会跳过所有空白字符。)
|
||||
5. × (回车也是一种空白分隔符,所以可以一个数字一行,分两行输入。)
|
||||
6. √ (这是讲义中强调的程序设计基本结构。)
|
||||
7. √ (这正是引入 `cin` 的核心价值。)
|
||||
8. × (讲义中的6步法强调,应该先整理思路,再翻译成代码。)
|
||||
9. √ (提取运算符 `>>` 的作用就是将读取到的值赋给变量。)
|
||||
10. × ( `cout` 应该使用插入运算符 `<<`,正确的写法是 `cout << "请输入一个数字";`。)
|
||||
Binary file not shown.
@@ -0,0 +1,95 @@
|
||||
### **C++ `cin` 输入 课后习题**
|
||||
|
||||
姓名: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
#### **一、 填空题**
|
||||
|
||||
1. 在C++中,`cin` 是 \_\_\_\_\_\_\_\_\_\_\_\_\_\_ 的英文缩写,它的主要作用是接收用户的键盘输入。
|
||||
2. `cin` 使用的运算符是 \_\_\_\_\_\_\_\_\_\_,这个运算符被称为 \_\_\_\_\_\_\_\_\_\_,它的箭头方向形象地表示数据从键盘流向变量。
|
||||
3. 一个有输入功能的程序,其基本流程可以分为三个步骤:\_\_\_\_\_\_\_\_\_\_、处理和输出。
|
||||
4. 当程序执行到 `cin >> a;` 语句时,会\_\_\_\_\_\_\_\_\_\_运行,并等待用户输入数据。
|
||||
5. `cin` 通过空白字符来区分多个输入数据,最常见的两种空白字符是\_\_\_\_\_\_\_\_\_\_和\_\_\_\_\_\_\_\_\_\_。
|
||||
6. 在使用 `cin >> num;` 之前,必须先\_\_\_\_\_\_\_\_\_\_变量 `num`,为输入的数据准备好存放空间。
|
||||
7. 讲义中用生活中的例子做比喻,把变量比作“抽屉”,那么 `cin` 的作用就是把外面的数据\_\_\_\_\_\_\_\_\_\_“抽屉”里。
|
||||
|
||||
#### **二、 单项选择题**
|
||||
|
||||
( ) 1. 在C++中,`cin` 的核心功能是什么?
|
||||
A. 在屏幕上打印文字和符号
|
||||
B. 让程序暂停指定的时间
|
||||
C. 定义新的变量类型
|
||||
D. 从键盘读取数据并存入变量
|
||||
|
||||
( ) 2. 下面哪条语句可以正确地从键盘读取一个整数并存放到变量 `score` 中?
|
||||
A. `cin << score;`
|
||||
B. `cout >> score;`
|
||||
C. `cin >> score;`
|
||||
D. `cout << score;`
|
||||
|
||||
( ) 3. 如果要用一条语句连续读取用户的两个整数,分别存入变量 `width` 和 `height`,应该怎么写?
|
||||
A. `cin >> width, height;`
|
||||
B. `cin >> width; height;`
|
||||
C. `cin >> width >> height;`
|
||||
D. `cin << width << height;`
|
||||
|
||||
( ) 4. 对于语句 `cin >> x >> y;`,用户在键盘上**不正确**的输入方式是?
|
||||
A. 输入 `10`,按空格键,再输入 `20`,按回车键
|
||||
B. 输入 `10`,按回车键,再输入 `20`,按回车键
|
||||
C. 输入 `10,20`,按回车键
|
||||
D. 输入 `10`,按多个空格键,再输入 `20`,按回车键
|
||||
|
||||
( ) 5. `cin` 这个工具主要解决了程序中的什么根本性问题?
|
||||
A. 计算速度太慢的问题
|
||||
B. 只能计算和处理“写死”在代码里的固定数据的问题
|
||||
C. 无法输出中文的问题
|
||||
D. 代码必须从 `main` 函数开始的问题
|
||||
|
||||
( ) 6. 阅读以下代码,它的功能是什么?
|
||||
```cpp
|
||||
int base, height;
|
||||
cin >> base >> height;
|
||||
int area = base * height / 2;
|
||||
cout << area;
|
||||
```
|
||||
A. 计算一个固定三角形的面积
|
||||
B. 输入两个整数作为底和高,然后计算并输出三角形的面积
|
||||
C. 只输入两个整数,不进行任何计算
|
||||
D. 这段代码有语法错误,无法运行
|
||||
|
||||
( ) 7. `cin >> a; cin >> b;` 和 `cin >> a >> b;` 这两种写法是什么关系?
|
||||
A. 前者正确,后者错误
|
||||
B. 两者功能完全不同
|
||||
C. 两者功能等价,但后者更简洁
|
||||
D. 后者正确,前者错误
|
||||
|
||||
( ) 8. 编程的6个步骤中,如果在“输入测试数据,验证结果”时发现输出与预期不符,这通常说明发生了什么错误?
|
||||
A. 语法错误
|
||||
B. 逻辑错误
|
||||
C. 编译错误
|
||||
D. 硬件故障
|
||||
|
||||
( ) 9. 假如程序是 `int a; cin >> a;`,而用户输入了 `5 6` 然后按回车,那么变量 `a` 中存储的值是多少?
|
||||
A. 56
|
||||
B. 5
|
||||
C. 6
|
||||
D. 11
|
||||
|
||||
( ) 10. `int a, b; cin >> a >> b;` 这两行代码执行时,程序的行为是?
|
||||
A. 立刻计算 a+b 的值
|
||||
B. 在屏幕上输出 a 和 b
|
||||
C. 定义了两个变量,然后暂停等待用户输入两个由空白字符隔开的数据
|
||||
D. 定义了两个变量,然后程序直接结束
|
||||
|
||||
#### **三、 判断题 (对的打“√”,错的打“×”)**
|
||||
|
||||
1. `cin` 的 `c` 代表 "C++",`in` 代表 "input"。 ( )
|
||||
2. 必须先定义变量,然后才能使用 `cin` 把数据存入这个变量。 ( )
|
||||
3. `cin` 使用的运算符是 `>>`,`cout` 使用的运算符是 `<<`,两者方向相反,作用也相反。 ( )
|
||||
4. `cin` 会自动忽略输入数据前多余的空格、Tab键或回车。 ( )
|
||||
5. 如果写 `cin >> x >> y;`,用户必须在同一行内输入两个数字,不能换行输入。 ( )
|
||||
6. “输入 -> 处理 -> 输出”是解决编程题目的三个基本步骤。 ( )
|
||||
7. 一个好的程序应该通过 `cin` 接收用户的任意合法输入,而不是每次都让用户去修改源代码。 ( )
|
||||
8. 在分析一个编程问题时,正确的做法是先动手写代码,再边写边想思路。 ( )
|
||||
9. `cin >> a;` 这行代码执行后,变量 `a` 的值就变成了用户刚刚从键盘输入的值。 ( )
|
||||
10. `cout >> "请输入一个数字";` 这行代码是正确的。 ( )
|
||||
|
||||
Binary file not shown.
Reference in new issue
Block a user