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.
Binary file not shown.
@@ -0,0 +1,230 @@
|
||||
# C++ 编程讲义 — 初识C++
|
||||
|
||||
工欲善其事,必先利其器。
|
||||
|
||||
编程本质上是我们通过计算机向机器下达精确指令的过程。因此,在正式编写第一行代码之前,我们必须先熟练掌握并使用最核心的工具——电脑的基本操作与 Windows 操作系统。对于初次接触计算机的同学,我们需要从最基础的物理设备开始学习。
|
||||
|
||||
---
|
||||
|
||||
## 第一部分:计算机基础设备操作
|
||||
|
||||
### 一、鼠标的基本操作
|
||||
|
||||
鼠标是我们在图形界面中向计算机发送位置与选择指令的设备。
|
||||
|
||||
* **左键单击**:用食指按一下鼠标左键并立即松开。用于选定目标(例如选中一段代码或定位光标)。
|
||||
* **左键双击**:快速、连续地按两次鼠标左键。通常用于打开软件或选中一整个单词。
|
||||
* **右键单击**:用中指按一下鼠标右键。用于唤出快捷菜单,可以在其中找到复制、粘贴等功能。
|
||||
* **拖拽**:按住左键不放,移动鼠标到目标位置后再松开。用于移动窗口或选中多行文本。
|
||||
|
||||
### 二、熟悉键盘按键
|
||||
|
||||
键盘是编写代码时最重要的输入设备。标准键盘一般包括26个英文字母键、10个数字键、12个功能键(F1~F12)、方向键以及其他的一些功能键。
|
||||
|
||||
所有按键在物理布局上主要分为5个区:
|
||||
|
||||
1. **主键盘区**:最大的一块区域,包含字母、数字和常用标点符号,是我们书写代码的核心区域。
|
||||
2. **功能键区(F1~F12)**:位于键盘最上方,在不同的软件中有不同的快捷功能。
|
||||
3. **编辑/控制键区**:包含方向键、删除键(Delete)等,用于在代码中移动光标和修改文本。
|
||||
4. **小键盘区**:位于最右侧,主要用于快速输入纯数字。
|
||||
5. **键盘指示灯**:提示当前键盘的状态(如大小写锁定、数字键盘锁定等)。
|
||||
|
||||
### **编程必须掌握的按键指令:**
|
||||
|
||||
* **Shift 键(上档键)**:用于切换中英文标点符号,或输入按键上半部分的符号(例如按住 Shift 再按数字 9,可以打出左括号 `(` )。
|
||||
* **Enter 键(回车键)**:在代码中用于换行,使指令结构清晰。
|
||||
* **Backspace 键(退格键)**:用于删除光标前面的字符,是修改代码错误的常用键。
|
||||
|
||||
---
|
||||
|
||||
## 第二部分:什么是程序与计算机语言?
|
||||
|
||||
大家目前可能对软件中复杂的程序代码感到难以理解,但是,大家了解人类生活中的程序吗?有什么程序是大家在日常生活中经历过的呢?
|
||||
|
||||
**例如:开学典礼的程序**
|
||||
主持人会宣布,今天典礼的程序如下:
|
||||
|
||||
* 第一项:升国旗;
|
||||
* 第二项:领导介绍;
|
||||
* 第三项:校长致辞;
|
||||
* 第四项:教师代表发言;
|
||||
* 第五项:学生代表发言。
|
||||
|
||||
这其实就是人类社会的程序。映射到计算机科学中,**计算机的程序被定义为:为了得到某种结果,通过计算机语言表达的指令序列。** 计算机通过严格执行你下达的指令,最终得出预期的结果。
|
||||
|
||||
**假如我们要编写一个让计算机“把大象塞进冰箱”的程序,相当于依次下达以下指令:**
|
||||
|
||||
1. 打开冰箱门;
|
||||
2. 把大象塞进冰箱;
|
||||
3. 关上冰箱门。
|
||||
|
||||
### 计算机语言的演变与分类
|
||||
|
||||
为了把上述指令传达给计算机,我们需要使用计算机语言。计算机语言主要分为三种:
|
||||
|
||||
1. **机器语言(二进制语言)**:由 `0` 和 `1` 组成,这是计算机底层唯一能直接听懂的语言,但人类极难阅读和编写。
|
||||
2. **汇编语言**:使用一些简短的英文字母代替二进制代码,比机器语言稍易读,但依然非常晦涩。
|
||||
3. **高级语言(接近英语/自然语言)**:使用人类容易理解的英文字母、单词和数学符号编写。
|
||||
|
||||
我们即将学习的 **C++ 课程就属于高级语言**。它的本质是由一套特定的英文单词和符号组成的指令集合。然而,计算机底层只能听懂二进制,这就意味着,**必须要将高级语言“翻译”成机器语言,计算机才能执行。**
|
||||
|
||||
---
|
||||
|
||||
## 第三部分:C++ 开发工具 (Dev-C++) 与执行过程
|
||||
|
||||
那我们应该在什么地方、如何去书写这些高级语言呢?这就需要用到专业的集成开发环境(IDE)。
|
||||
|
||||
### 一、初识 Dev-C++
|
||||
|
||||
对于初学者,我们使用 **Dev-C++**。这是一款专门用于书写和运行 C/C++ 高级语言的工具。它提供了一个干净的文本编辑区,并且内置了代码高亮等便捷功能,极大地规范和方便了我们的书写。
|
||||
|
||||
### 二、程序的编译(翻译)与报错机制
|
||||
|
||||
当我们在 Dev-C++ 中书写好高级语言代码后,此时代码还只是一堆英文字符,系统在等待着“翻译官”进行翻译。
|
||||
**这个“翻译”的过程,在计算机科学中被称为“编译 ”。**
|
||||
|
||||
* **严格的语法**:翻译官只能翻译它看得懂的、符合严格规则的代码。如果代码存在拼写错误,或者不符合语法要求,翻译官就会看不懂并拒绝工作。
|
||||
* **编译报错(出现红色的 ×)**:如果下方窗口出现红色的 `×` 或错误提示,说明代码有错误,翻译失败。**只有在代码完全无误,翻译官顺利翻译后,程序才能被执行。**
|
||||
* **标点符号规范**:因为 C++ 是一门基于英文环境诞生的语言,它的指令**无法识别中文标点符号**。如果误用了中文的逗号(,)或分号(;),就等同于你自创了一个不存在的单词,翻译官会直接报错。编写代码时,必须确保输入法处于**英文半角**状态。
|
||||
|
||||
### 三、编译并运行(快捷键 F11)
|
||||
|
||||
当确保代码书写完毕且无误后,我们需要让计算机去执行命令。
|
||||
在 Dev-C++ 中,**按下键盘上的 `F11` 键,即可一键开始“编译并运行”程序。** 软件会自动先将代码翻译为机器语言,紧接着让计算机执行它。
|
||||
|
||||
### 四、控制台(黑框框)
|
||||
|
||||
按下 `F11` 并且编译成功后,屏幕上会弹出一个黑色的独立窗口。这个窗口被称为**控制台**。
|
||||
控制台的作用是**展示程序的最终运行结果**,或者在程序需要用户输入数据时,**与程序进行交互**。当控制台弹出并显示出预期的结果时,就意味着你的指令被计算机成功执行了。
|
||||
|
||||
---
|
||||
|
||||
## 第四部分:初识 C++ —— 第一个程序 Hello World
|
||||
|
||||
了解了工具后,我们将正式开始编写全人类学习编程时的第一个经典程序:向世界问好。
|
||||
|
||||
### 一、代码示例
|
||||
|
||||
在 Dev-C++ 的代码编辑区中,输入以下代码:
|
||||
|
||||
```cpp
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
int main() {
|
||||
cout << "Hello, World!" << endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### 二、代码解析
|
||||
|
||||
这段看似复杂的英文,其实每一行都有其含义:
|
||||
|
||||
* **`#include <iostream>` —— 引入输入输出流库**
|
||||
* **含义**:告诉计算机“我需要使用标准的输入和输出工具”。如果没有这一句指令,计算机就无法理解后续代码中用于在屏幕上显示文字的命令。
|
||||
* 就像做披萨前,要先准备好烤箱和工具,没有烤箱肯定无法制作披萨。
|
||||
* 如果没有这一句,电脑就不知道什么是 `cout`,没有用来输出文字的工具,自然就没法输出文字。
|
||||
|
||||
|
||||
|
||||
* **`using namespace std;` —— 使用标准命名空间**
|
||||
|
||||
* **含义**:告诉计算机“本程序默认使用名为 `std` 的标准工具库”。
|
||||
* 比如:A 工具箱和 B 工具箱都有个锤子,你就要先说清楚是哪个工具箱的,不然计算机就会搞混。
|
||||
* `std` 就像 工具箱,`cout` 就像锤子。
|
||||
* 写了这一句,相当于告诉电脑:“我默认要锤子的时候都用的是 `std` 这个工具箱。”,我们以后要用的所有的工具基本都是在`std`这个工具箱里的。
|
||||
|
||||
|
||||
|
||||
* **`int main() {` —— 主程序入口**
|
||||
|
||||
* **含义**:这是所有 C++ 程序的起点。程序执行时,必定从 `main` 函数后方的大括号 `{` 开始,到对应的大括号 `}` 结束。一个完整的 C++ 程序必须有且仅有一个 `main` 。`int` 是单词 **integer** 的缩写,意思是“整数”,规定这个函数最终执行完毕后,必须向计算机汇报一个整数作为结果。
|
||||
* 好比一个“主任务清单”,电脑会从这里开始做事情。
|
||||
|
||||
|
||||
|
||||
* **`cout << "Hello, World!";` —— 屏幕输出指令**
|
||||
|
||||
* `cout`:用于输出数据的工具,相当于一个“喇叭”,把数据告诉计算机让它来输出。
|
||||
* `<<`:像传送带,把右边的东西送到左边。
|
||||
* **`"Hello, World!"`**:被英文双引号包裹的内容,即我们要原样显示在屏幕上的具体文字数据。
|
||||
* **整句话的意思**:把 "Hello, World!" 交给输出系统,让它把这句话输出在控制台上。
|
||||
|
||||
* *注意:这一行的末尾必须以英文分号 `;` 结束,C++ 里 `;` 代表一条指令的执行完毕。*
|
||||
|
||||
|
||||
* **`return 0;` —— 正常结束程序**
|
||||
|
||||
* **含义**:返回一个数字 `0` 给系统。`0` 表示一切正常。
|
||||
* 好比告诉老师:“作业完成了,没有出错。”
|
||||
|
||||
|
||||
* **`}` —— 程序结束**
|
||||
|
||||
* **含义**:与前文的 `{` 对应,标志着整个 `main` 函数的指令序列到此彻底结束。
|
||||
|
||||
---
|
||||
|
||||
以下是这段代码中涉及的英文单词与缩写的中文翻译对照表(理解英语含义后,对于代码的理解也会非常有帮助):
|
||||
|
||||
### 第一个C++程序 基础词汇翻译表(务必记忆!)
|
||||
|
||||
| **代码单词** | **英文全拼** | **中文含义** |
|
||||
| ------------- | ------------------- | -------------------- |
|
||||
| **include** | include | 包含、引入 |
|
||||
| **iostream** | input output stream | 输入输出数据流 |
|
||||
| **using** | using | 使用 |
|
||||
| **namespace** | name space | 命名空间 |
|
||||
| **std** | standard | 标准 |
|
||||
| **int** | integer | 整数 |
|
||||
| **main** | main | 主要的(程序的起点) |
|
||||
| **cout** | console output | 控制台输出 |
|
||||
| **return** | return | 返回 |
|
||||
|
||||
------
|
||||
|
||||
## 第五部分:程序员的注释
|
||||
|
||||
### 一、什么是注释?
|
||||
|
||||
注释是专门写给人看的说明文字,计算机的翻译官(编译器)在将代码翻译成机器语言时,会**完全跳过并忽略**这些内容。
|
||||
|
||||
可以将注释理解为我们在课本空白处书写的学习笔记:老师(代表计算机)在批改作业时不会检查这些笔记,但这些文字能极大地帮助你自己或他人理清程序的逻辑与思路。
|
||||
|
||||
### 二、注释的两种标准写法
|
||||
|
||||
在 C++ 语言中,为了满足不同的说明需求,提供了两种添加注释的语法规范:
|
||||
|
||||
**1. 单行注释 (`//`)**
|
||||
|
||||
- **语法规则**:在代码中使用两个连续的斜杠 `//`。从这两个斜杠开始,直到本行结束的所有文字,都会被编译器自动忽略。通常用于对某单一行的代码进行简短解释。
|
||||
- **代码示例**:
|
||||
|
||||
```cpp
|
||||
cout << "Hello"; // 这是一句单行注释,专门用于解释左侧这行代码的作用
|
||||
```
|
||||
|
||||
**2. 多行注释 (`/* ... */`)**
|
||||
|
||||
- **语法规则**:从 `/*` 符号作为起点开始,直到 `*/` 符号作为终点结束。这两个符号中间包裹的所有文字内容(无论中间跨越了多少行),都会被系统统一认定为注释。此结构非常适合在程序开头书写长篇的整体功能说明。
|
||||
- **代码示例**:
|
||||
|
||||
```C++
|
||||
/* 这是多行注释块
|
||||
此处可以详细书写第一点、第二点...
|
||||
计算机在执行时会完全无视这部分内容
|
||||
*/
|
||||
cout << "World";
|
||||
```
|
||||
|
||||
*(注:在 Dev-C++ 等专业软件中,注释部分通常会被自动标记为绿色或其他浅色,以便与正常执行的代码做出明显的视觉区分。)*
|
||||
|
||||
### 三、为什么在软件开发中要书写注释?
|
||||
|
||||
初学者往往为了节省时间而跳过书写注释的步骤,但书写注释是非常重要的,主要是因为:
|
||||
|
||||
- **防遗忘**:人类的短期记忆是有限的。经过数周或数月后再次阅读自己编写的代码时,如果没有注释辅助回忆,当时设计的复杂计算逻辑往往难以迅速被重新理解。
|
||||
- **团队协作**:在真实的科技企业中,软件开发是一个团队项目,你的代码必定需要交接给其他工程师查阅或修改。清晰、规范的注释是保证团队成员之间能够快速读懂彼此逻辑。
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,38 @@
|
||||
### **C++ 初识C++ 课后习题 - 答案**
|
||||
|
||||
#### **一、 填空题**
|
||||
|
||||
1. 高级,编译
|
||||
2. `F11`
|
||||
3. 控制台
|
||||
4. `main`
|
||||
5. 控制台输出,整数
|
||||
6. 分号 (`;`)
|
||||
7. 单行,多行
|
||||
8. 输入输出流库 (或 标准输入输出功能)
|
||||
|
||||
#### **二、 单项选择题**
|
||||
|
||||
1. **B**. 程序是一系列有序的指令。
|
||||
2. **B**. 编译时出现红色错误,意味着编译器(翻译官)读不懂代码,是语法层面的问题。
|
||||
3. **C**. `int main()` 是C++程序的起点和入口。
|
||||
4. **C**. `cout` 用于输出,使用 `<<` 运算符,要输出的文字需用英文双引号包裹。
|
||||
5. **C**. `endl` 是 `end of line` 的缩写,用于换行。
|
||||
6. **B**. 注释是给程序员看的,编译器会忽略。
|
||||
7. **C**. `std` 是 `standard` (标准) 的缩写。
|
||||
8. **A**. `cout` 会紧挨着输出,代码中没有空格也没有 `endl`,所以会连在一起。
|
||||
9. **C**. `return 0;` 代表程序顺利完成任务,正常退出。
|
||||
10. **B**. 使用 `//` 和 `/* */` 注释掉的代码行都不会被编译和执行,所以只有 `Step 2` 会被输出。
|
||||
|
||||
#### **三、 判断题**
|
||||
|
||||
1. × (高级语言必须经过编译,翻译成机器语言后才能被计算机执行。)
|
||||
2. √ (C++的语法规定,所有标点必须是英文半角状态。)
|
||||
3. × (所有C++程序都必须有且仅有一个 `main` 函数作为入口。)
|
||||
4. × (`cout` 使用的符号是 `<<`。)
|
||||
5. √ (`#include` 是预处理指令,不是C++语句,所以末尾没有分号。)
|
||||
6. √ (这是单行注释的定义。)
|
||||
7. × (意思是“使用标准命名空间std”。)
|
||||
8. √ (`endl` 会在输出"Hello"后换行,所以"World"会显示在第二行。)
|
||||
9. √ (在文本编辑器中,回车键用于换行。)
|
||||
10. √ (这是C++多行注释的正确语法。)
|
||||
Binary file not shown.
@@ -0,0 +1,95 @@
|
||||
### **C++ 初识C++ 课后习题**
|
||||
|
||||
姓名: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
#### **一、 填空题**
|
||||
|
||||
1. 我们学习的C++属于\_\_\_\_\_\_\_\_\_\_\_\_语言,它需要通过一个叫做“\_\_\_\_\_\_\_\_\_\_\_\_”的过程,翻译成计算机唯一能直接听懂的机器语言。
|
||||
2. 在Dev-C++中,我们可以按键盘上的\_\_\_\_\_\_\_\_\_\_\_\_键来一键“编译并运行”程序。
|
||||
3. 程序编译成功并运行后,会弹出一个黑色的窗口用来显示结果,这个窗口叫做\_\_\_\_\_\_\_\_\_\_\_\_。
|
||||
4. 所有C++程序都从\_\_\_\_\_\_\_\_\_\_\_\_开始执行,这是程序的入口。
|
||||
5. `cout` 来自英文 `console output`,是\_\_\_\_\_\_\_\_\_\_\_\_的意思;`int` 来自英文 `integer`,是\_\_\_\_\_\_\_\_\_\_\_\_的意思。
|
||||
6. 在C++代码中,每一条独立的指令语句的末尾都必须使用英文的\_\_\_\_\_\_\_\_\_\_作为结束标记。
|
||||
7. 我们可以在代码中书写两种注释:以 `//` 开始的\_\_\_\_\_\_\_\_\_\_注释,和以 `/*` `*/` 包裹的\_\_\_\_\_\_\_\_\_\_注释。
|
||||
8. `#include <iostream>` 这行代码的作用是引入\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_,这样我们才能使用 `cout` 工具。
|
||||
|
||||
#### **二、 单项选择题**
|
||||
|
||||
( ) 1. 讲义中“把大象塞进冰箱”的例子,是为了说明程序是什么?
|
||||
A. 一种文件格式 B. 一系列需要严格按顺序执行的指令
|
||||
C. 一种计算机硬件 D. 一种只能由 `0` 和 `1` 组成的代码
|
||||
|
||||
( ) 2. 在Dev-C++的编辑区写好C++代码后,如果点击“编译”时,下方出现了红色的错误提示,最可能的原因是?
|
||||
A. 电脑没有连接网络
|
||||
B. 代码存在语法错误,例如拼写错误或使用了中文标点
|
||||
C. 程序运行时间太长
|
||||
D. 程序逻辑太复杂
|
||||
|
||||
( ) 3. 每一个C++程序都必须有且仅有一个的入口是?
|
||||
A. `#include <iostream>` B. `using namespace std;`
|
||||
C. `int main()` D. `return 0;`
|
||||
|
||||
( ) 4. 在C++中,要在屏幕上原样输出一行文字“I love C++”,应该使用下面哪条指令?
|
||||
A. `cout >> "I love C++";` B. `cin << "I love C++";`
|
||||
C. `cout << "I love C++";` D. `main << "I love C++";`
|
||||
|
||||
( ) 5. `endl` 在 `cout` 语句中的主要作用是什么?
|
||||
A. 表示程序结束
|
||||
B. 在输出的末尾添加一个空格
|
||||
C. 输出一个换行符,让后续的输出从下一行开始
|
||||
D. 清除屏幕上所有已有的文字
|
||||
|
||||
( ) 6. 关于代码中的注释,下列说法正确的是?
|
||||
A. 注释是写给计算机执行的指令
|
||||
B. 注释是写给人看的说明文字,计算机会自动忽略它
|
||||
C. 写了注释会让程序运行变慢
|
||||
D. C++只支持 `//` 这一种注释
|
||||
|
||||
( ) 7. 根据讲义中的词汇表,`std` 是哪个单词的缩写?
|
||||
A. student (学生) B. study (学习)
|
||||
C. standard (标准) D. start (开始)
|
||||
|
||||
( ) 8. 阅读以下代码片段,它的最终输出是什么?
|
||||
```cpp
|
||||
cout << "Apple";
|
||||
cout << "Banana";
|
||||
```
|
||||
A. AppleBanana
|
||||
B. Apple Banana
|
||||
C. Apple (然后换行) Banana
|
||||
D. BananaApple
|
||||
|
||||
( ) 9. `return 0;` 这句代码在 `main` 函数中的作用是什么?
|
||||
A. 输出数字0到屏幕上
|
||||
B. 告诉系统程序出错了
|
||||
C. 告诉系统程序正常结束了
|
||||
D. 让程序重新从头执行一次
|
||||
|
||||
( ) 10. 阅读以下代码,控制台最终会显示什么内容?
|
||||
```cpp
|
||||
// cout << "Step 1" << endl;
|
||||
cout << "Step 2" << endl;
|
||||
/*
|
||||
cout << "Step 3" << endl;
|
||||
*/
|
||||
```
|
||||
A. Step 1 B. Step 2
|
||||
C. Step 3 D. Step 1 (然后换行) Step 2 (然后换行) Step 3
|
||||
|
||||
#### **三、 判断题 (对的打“√”,错的打“×”)**
|
||||
|
||||
1. ( ) C++是一门高级语言,计算机可以直接理解并执行C++代码,无需翻译。
|
||||
2. ( ) 在编写C++代码时,输入法必须处于英文半角状态,不能使用中文标点符号。
|
||||
3. ( ) 一个C++程序可以没有 `main` 函数。
|
||||
4. ( ) `cout` 使用的符号是 `>>`,代表数据从变量流向屏幕。
|
||||
5. ( ) `#include <iostream>` 这行代码的末尾不需要加分号 `;`。
|
||||
6. ( ) `//` 符号后面的所有内容,直到这一行的末尾,都会被当作注释处理。
|
||||
7. ( ) `using namespace std;` 的意思是“使用一个名叫std的学生”。
|
||||
8. ( ) 以下代码会在屏幕上分两行输出"Hello"和"World"。
|
||||
```cpp
|
||||
cout << "Hello" << endl;
|
||||
cout << "World";
|
||||
```
|
||||
9. ( ) 计算机键盘上的 `Enter` 键在代码编辑区的主要作用是换行。
|
||||
10. ( ) `/* 我是注释 */` 这种写法是C++中一种正确的注释方式。
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,151 @@
|
||||
# C++ 数学运算与在线评测 讲义
|
||||
|
||||
## 一、 双引号 —— 复读机
|
||||
|
||||
在开始让计算机进行数学运算前,我们必须先记住 `cout` 输出时的规则——**双引号的作用**。
|
||||
|
||||
- **带有双引号 `""`**:计算机将其视为**纯文本**。无论里面写了什么(就算是数学公式),编译器都会像复读机一样原样输出。
|
||||
- **没有双引号**:计算机将其视为**数学公式**。编译器会在后台先计算出精确结果,然后再将结果输出。
|
||||
|
||||
> `cout` 完全可以输出数学运算的结果,前提是**不要**给算式加双引号。
|
||||
|
||||
------
|
||||
|
||||
## 二、 基础运算与编程题目(书本 P4 页 例 1-2)
|
||||
|
||||
**题目回顾(书本 P4 页):** 10 个苹果,小 A 拿走 2 个,Uim 拿走 4 个,八尾勇拿走剩下的。求:①小 A 和 Uim 共拿走多少?②八尾勇拿走多少?(要求:输出两个数字,中间用空格隔开)。
|
||||
|
||||
### 1. 任务拆解与算式转化
|
||||
|
||||
- **第一问**:小 A 和 Uim 一共拿走的数量 $\rightarrow$ 转化为算式:`2 + 4`
|
||||
- **第二问**:八尾勇拿走剩下的数量 $\rightarrow$ 转化为算式:`10 - 2 - 4`
|
||||
|
||||
### 2. 书写代码
|
||||
|
||||
我们的目标是输出,因此必须调用 `cout` 工具。因为要输出两个数字,我们就可以把两个答案拼在一起:
|
||||
|
||||
- **答案一**:`2 + 4`
|
||||
- **分隔符**:`" "`(注意:空格是纯文本,**必须**用双引号包裹,让编译器原样输出)
|
||||
- **答案二**:`10 - 2 - 4`
|
||||
|
||||
**代码语句:**
|
||||
|
||||
```C++
|
||||
cout << 2 + 4 << " " << 10 - 2 - 4;
|
||||
```
|
||||
|
||||
*最后将这行核心的逻辑填入到 `int main() { ... }` 的大括号内部即可完成代码编写。*
|
||||
|
||||
------
|
||||
|
||||
## 三、 实战:将本题代码提交至 OJ 系统 (zmwl.online)
|
||||
|
||||
代码在本地电脑(Dev-C++)运行成功后,我们需要将其提交给**在线评测系统(OJ,考官)进行打分**,在之后的考试或者竞赛中,都是通过将代码提交到在线评测系统中打分的方式来获取成绩。
|
||||
|
||||
### 步骤 1:本地验证
|
||||
|
||||
在正式提交前,先在本地按下 **F11** 观察 Dev-C++ 的控制台。我们通过数学运算能知道最终的答案是 `6` 与 `4`,而题目要求的格式是输出两个数字,中间用空格隔,所以最终显示的数字必须是 `6 4`,不能有多余的数据或标点。
|
||||
|
||||
### 步骤 2:登录
|
||||
|
||||
1. **打开网站**:浏览器地址栏输入 `zmwl.online` 并回车。
|
||||
2. **账号登录**:输入用户名,初始密码统一为 `zmwl0000`。
|
||||
3. **寻找考题**:点击上方“题库”,在列表中点击编号为 **B0001** 的题目进入详情页。
|
||||
|
||||
### 步骤 3:代码复制搬运 (快捷键操作)
|
||||
|
||||
切换回 Dev-C++ 软件窗口,执行以下键盘指令:
|
||||
|
||||
- **全选**:按住 **Ctrl** 键不放,按 **A** 键。(代码区背景变蓝,全部圈中)
|
||||
- **复制**:按住 **Ctrl** 键不放,按 **C** 键。(代码存入电脑的剪贴板中)
|
||||
|
||||
### 步骤 4:递交与查收结果
|
||||
|
||||
1. **准备粘贴**:回到浏览器 B0001 题目页,点击“**递交**”按钮,进入一个大空白输入框。
|
||||
2. **执行粘贴**:鼠标左键点击空白框确保光标闪烁,按住 **Ctrl** 键不放,按 **V** 键。
|
||||
3. **提交检验**:确认代码无误后,点击系统底部的递交按钮,等待系统判定正误。
|
||||
|
||||
------
|
||||
|
||||
## 四、 C++ 的特殊数学法则:除法与取余
|
||||
|
||||
C++ 中的加、减、乘以及运算优先级与小学数学一致,但**除法 (`/`)** 存在差异。
|
||||
|
||||
### 1. 除法 (`/`) 的两种形态
|
||||
|
||||
| **形态** | **触发条件** | **运算规则** | **代码示例** | **输出结果** |
|
||||
| -------------- | ------------------------ | ------------------------------------ | ------------------ | ------------ |
|
||||
| **整数相除** | 除数和被除数**都是整数** | 小数部分被**直接截断**(不四舍五入) | `cout << 7 / 2;` | **3** |
|
||||
| **浮点数相除** | 至少有一个数是**小数** | 自动开启浮点除法,保留小数部分 | `cout << 7.0 / 2;` | **3.5** |
|
||||
|
||||
> **总结:**
|
||||
>
|
||||
> 1. 整数乘/除一个浮点数,结果是浮点数。
|
||||
>
|
||||
> 2. 整数加上一个浮点数,结果也是浮点数。
|
||||
>
|
||||
> *(例:6 元和 5 元平分,算式应写为 `(6 + 5) / 2.0` 以获取精确的小数结果)*
|
||||
|
||||
### 2. 取余运算 (`%`)
|
||||
|
||||
百分号 `%` 在 C++ 中是**取模运算(求余数)**。
|
||||
|
||||
- **`/` 关心商**:每个人平均分到几个?
|
||||
- **`%` 关心余数**:大家都分完一样多后,还剩下几个?
|
||||
|
||||
**例 1-3 分苹果(题目编号 B0002,书本 P6 页):**
|
||||
|
||||
14 个苹果均分给 4 名同学。
|
||||
|
||||
```C++
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
int main(){
|
||||
cout << 14 / 4 << endl; // 每人分得几个? (输出 3)
|
||||
cout << (14 / 4) * 4 << endl; // 一共分出去多少?(输出 12)
|
||||
cout << 14 % 4 << endl; // 放回冰箱几个(即求余数)?(输出 2)
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
------
|
||||
|
||||
## 五、 科学表示法与数学工具调用
|
||||
|
||||
### 1. 科学计数法(例 1-5)
|
||||
|
||||
在 C++ 中处理极大或极小的数字时,经常遇到包含字母 `e` 的表示法:
|
||||
|
||||
- `5e6` 代表 $5 \times 10^6$(即 5000000)。
|
||||
- `5e-6` 代表 $5 \times 10^{-6}$(即 0.000005)。
|
||||
|
||||
### 2. 物理与几何题(例 1-6 & 例 1-7)
|
||||
|
||||
- **火车相遇问题(例 1-6)**:纯基础运算。相对速度与相对距离公式 $\rightarrow$ `cout << (260 + 220) / (12 + 20);`
|
||||
- **对角线问题(例 1-7)**:长宽为 6 和 9 的长方形,根据勾股定理求对角线 $\sqrt{6^2+9^2}$。
|
||||
|
||||
### 3. 引入高级数学工具:`<cmath>`
|
||||
|
||||
C++ 内部预制了大量可以直接使用的数学工具(函数)。要使用它们,**必须在基础代码顶部加上 `#include <cmath>`**。
|
||||
|
||||
- **开平方工具:`sqrt()`**
|
||||
- **用法**:把需要开根号的数字丢进括号里。
|
||||
- **示例**:`cout << sqrt(9);` (输出 3)
|
||||
- **求次方工具:`pow(x, y)`**
|
||||
- **用法**:计算 $x$ 的 $y$ 次方,数字之间用逗号隔开。
|
||||
- **示例**:`cout << pow(2, 3);` (计算 $2^3$,输出 8)
|
||||
|
||||
**例1-7 对角线问题代码:**
|
||||
|
||||
```C++
|
||||
#include <iostream>
|
||||
#include <cmath> // 必须引入数学的工具箱
|
||||
using namespace std;
|
||||
|
||||
int main(){
|
||||
// 计算过程:先算出 6 的 2 次方加上 9 的 2 次方,再对总和进行开根号
|
||||
cout << sqrt(pow(6, 2) + pow(9, 2)) << endl;
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,29 @@
|
||||
### 参考答案
|
||||
|
||||
#### **一、 填空题**
|
||||
|
||||
1. `5 + 3`
|
||||
2. `8`
|
||||
3. `4`
|
||||
4. `1`
|
||||
5. `4.5`
|
||||
|
||||
#### **二、 单项选择题**
|
||||
|
||||
1. **(B)** (带双引号,原样输出)
|
||||
2. **(A)** (没有双引号,计算结果)
|
||||
3. **(C)** (整数除法,`13 / 5` 商2余3,结果为2)
|
||||
4. **(C)**
|
||||
5. **(C)** (至少有一个数是小数,才能触发浮点数除法)
|
||||
6. **(B)** (先计算 `2+4` 得 `6`,然后输出空格,再计算 `10-2-4` 得 `4`)
|
||||
7. **(B)**
|
||||
|
||||
#### **三、 判断题**
|
||||
|
||||
1. **(×)** (带双引号会原样输出 "3 * 4")
|
||||
2. **(√)** (讲义中明确指出是“直接截断”,不四舍五入)
|
||||
3. **(√)** (这是触发浮点数除法的条件)
|
||||
4. **(×)** (讲义中强调,提交前最好先在本地验证)
|
||||
5. **(√)** (这是 `%` 运算符的定义)
|
||||
6. **(×)** (这是求余数,`5` 除以 `2` 商 `2` 余 `1`,结果是 `1`)
|
||||
7. **(√)** (空格是文本,需要用双引号包围)
|
||||
@@ -0,0 +1,89 @@
|
||||
### C++ 数学运算与评测 课后习题
|
||||
|
||||
姓名: _________________________________________________________
|
||||
|
||||
#### **一、 填空题**
|
||||
|
||||
1. 代码 `cout << "5 + 3";` 的输出结果是:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
|
||||
2. 代码 `cout << 5 + 3;` 的输出结果是:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
|
||||
3. 在 C++ 中,两个整数相除得到的结果会\_\_\_\_\_\_\_\_\_\_\_(填写 舍弃/保留)小数。
|
||||
4. `%` 符号在 C++ 中的意义是:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
|
||||
5. `cout << 9 / 2;` 的输出结果是:\_\_\_\_\_\_\_\_\_\_。
|
||||
6. `cout << 15 / 2.0;` 的输出结果是:\_\_\_\_\_\_\_\_\_\_。
|
||||
7. `cout << 9 % 2;` 的输出结果是:\_\_\_\_\_\_\_\_\_\_。
|
||||
|
||||
#### **二、 单项选择题**
|
||||
|
||||
( ) 1. 执行 `cout << "10 / 2";` 后,屏幕上会显示什么?
|
||||
A. `5` B. `10 / 2` C. `10/2` D. `2`
|
||||
|
||||
( ) 2. 执行 `cout << 10 / 2;` 后,屏幕上会显示什么?
|
||||
A. `5` B. `10 / 2` C. `10/2` D. `2`
|
||||
|
||||
( ) 3. 执行 `cout << 13 / 5;` 后,屏幕上会显示什么?
|
||||
A. `3` B. `2.6` C. `2` D. `1`
|
||||
|
||||
( ) 4. 在 C++ 中,`%` 运算符代表什么?
|
||||
A. 百分比 B. 除法 C. 取余数 D. 乘法
|
||||
|
||||
( ) 5. 如何计算 `10` 除以 `4` 才能得到带有小数的结果 `2.5`?
|
||||
A. `cout << 10 / 4;`
|
||||
B. `cout << 10 % 4;`
|
||||
C. `cout << 10.0 / 4;`
|
||||
D. `cout << "10 / 4";`
|
||||
|
||||
( ) 6. 对于代码代码是 `cout << 2 + 4 << " " << "10 - 2 - 4";`,它的最终输出结果是?
|
||||
A. `6 10-2-4` B. `6 4` C. `64` D. `6, 4`
|
||||
|
||||
( ) 7. 在线评测系统 (OJ) 的主要作用是什么?
|
||||
A. 帮助我们写代码的软件
|
||||
B. 用来运行和评判我们代码对错的“考官”
|
||||
C. 一个只能存储代码的网站
|
||||
D. C++ 的一个内置功能
|
||||
|
||||
#### **三、 判断题**
|
||||
|
||||
( ) 1. `cout << "3 * 4";` 这行代码会输出 12。
|
||||
( ) 2. 整数除法 `7 / 3` 的结果是 `2`,因为小数部分被直接舍弃,而不是四舍五入。
|
||||
( ) 3. 在 C++ 中,只要除法算式中有一个数字是小数(如 `5.0 / 2`),计算结果就会保留小数。
|
||||
( ) 4. 把代码提交到在线评测系统(OJ)之前,不需要在自己的电脑上运行测试。
|
||||
( ) 5. `%` 运算符可以用来计算一个数除以另一个数的余数。
|
||||
( ) 6. `cout << 5 % 2;` 的结果是 2.5。
|
||||
( ) 7. 在 `cout` 语句中,如果想输出一个空格,必须写成 `cout << " ";`。
|
||||
|
||||
#### **四、 默写题**
|
||||
|
||||
请在下方的空白处,默写出基本程序的框架代码,并简要说明每一句代码的意义。
|
||||
|
||||
```cpp
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,203 @@
|
||||
# C++ 变量与常量 讲义
|
||||
|
||||
## 一、 为什么我们需要变量?
|
||||
|
||||
**例 1-8:存钱问题(参考书本 P9 1.3 节)**
|
||||
Uim 的银行账户里原有 100 元。经过了以下操作:
|
||||
|
||||
1. 往里面存了 10 元;
|
||||
2. 购物花掉了 20 元;
|
||||
3. 把里面的钱全部取出。
|
||||
*需求:在每次操作后输出账户余额。*
|
||||
|
||||
**分析:** 这个问题无法用一个简单的算式一次性解决。我们需要在每一步操作后,把算出来的**中间结果**保存下来,留给下一步继续计算。在编程中,用来**存储计算中间结果**的工具,就叫做**变量 **。
|
||||
|
||||
---
|
||||
|
||||
## 二、 计算机里的容器
|
||||
|
||||
在生活中,我们用**容器**(如碗、盘子)来存放物品。在计算机中,我们用**变量**来存放数据。
|
||||
|
||||
**做菜的比喻(参考书本 P15 第一自然段):**
|
||||
|
||||
* **原材料** = 我们要处理的数据(数字、字符等)。
|
||||
* **容器** = 变量(用来装数据)。
|
||||
* **操作台** = 计算机的内存。
|
||||
|
||||
**内存的物理形态:**
|
||||
内存就像一排排的小抽屉,一个抽屉就是一个**字节 (Byte)**。常用 1 字节 = 8 位(bit),每一位只能存 0 或 1。位是最小的数据单位。不同的数据类型,占用的字节数可能不同。
|
||||
|
||||
---
|
||||
|
||||
## 三、 声明变量:挑个柜子写上自己的名字
|
||||
|
||||
如果你想占用内存里的“抽屉”,必须先向计算机**声明**,否则别人(其他程序)可能也会去用这个抽屉,导致数据大乱斗。
|
||||
|
||||
**声明变量的格式:** `数据类型 + 变量名;`
|
||||
|
||||
### 1. 数据类型(选多大的柜子)
|
||||
|
||||
*参考书本 P16 表 2-1*
|
||||
做菜时,装高汤不能用菜篓子。编程时,不同的数据也要选不同类型的柜子:
|
||||
|
||||
| 分类 | 类型名称 | 关键字 | 说明 / 存储范围 |
|
||||
| ----------------- | ------------ | ----------- | ----------------------------------------------------- |
|
||||
| **整型 (整数)** | 短整型 | `short` | -32768 ~ 32767 |
|
||||
| | **基本整型** | `int` | **-2147483648 ~ 2147483647 (最常用)** |
|
||||
| | 长整型 | `long long` | 存非常大的整数 |
|
||||
| **浮点型 (小数)** | 单精度型 | `float` | 通常约有 6~7 位十进制有效数字 |
|
||||
| | **双精度型** | `double` | **通常约有 15~16 位十进制有效数字 (最常用)** |
|
||||
| **字符型** | 字符型 | `char` | 单个字符,例如 `A`, `!`, `?`, `b` 等 |
|
||||
| **布尔型** | 布尔型 | `bool` | 只有真 (`true` 正确的) 和假 (`false` 错误的) 两种状态 |
|
||||
|
||||
### 2. 变量名命名规则(贴什么名字)
|
||||
|
||||
*参考书本 P11 第三自然段*
|
||||
变量名必须做到**见名知意**(具有自解释性,比如用 `balance` 表示余额,用 `age` 表示年龄)。
|
||||
|
||||
* **强制法则:** 只能由字母、数字和下划线(`_`)组成。
|
||||
* **数字禁忌:** 数字**绝对不能**出现在第一个位置上!(`num1` 正确,`1num` 错误)。
|
||||
* **避开关键字:** 不能使用 C++ 自带的指令词(如 `const`, `return`, `int`)。
|
||||
* **不可重复:** 同一作用域(范围)内,名字不能重复,你不能命名两个柜子都叫做`pingguo`。
|
||||
* **语言限制:** 英文不好可以用拼音(如 `pingguo`),但**严禁使用中文**!
|
||||
|
||||
---
|
||||
|
||||
## 四、 赋值与初始化:往柜子里装东西
|
||||
|
||||
声明了柜子后,我们如何把数据放进去呢?这就需要用到**赋值符 (`=`)**。
|
||||
**注意:** 在 C++ 中,`=` 不叫“等于”,它叫“赋值”。它的动作是:**将等号右边的数值,粘贴(覆盖)给左边的变量。**
|
||||
|
||||
### 1. 变量的初始化
|
||||
|
||||
初始化指的是**在定义变量的同时就给它赋值**,避免柜子里残留以前的垃圾数据。比方说之前有人往这个柜子里放了化学试剂,如果你直接往里放食材的话,肯定就会有危险!
|
||||
|
||||
```cpp
|
||||
int num; // 未初始化,如果直接去读取里面的数据,会读取到随机的垃圾数字
|
||||
int a = 10; // 安全:定义整数 a,并初始化为 10
|
||||
double b = 3.123; // 安全:定义小数 b,并初始化为 3.123
|
||||
```
|
||||
|
||||
### 2. 连续定义与赋值(补充知识,请记在书本 P15 页)
|
||||
|
||||
如果我们需要同时申请多个同类型的变量,可以用逗号 `,` 连写:
|
||||
|
||||
```cpp
|
||||
int a, b; // 同时申请两个空柜子 a 和 b
|
||||
int x = 10, y = 20; // 同时申请两个柜子 x 和 y 并装入初始值
|
||||
```
|
||||
|
||||
### 3. 赋值的覆盖特性与累加
|
||||
|
||||
对变量的赋值是一个**覆盖**过程。新数据装进去,旧数据就彻底消失了。
|
||||
|
||||
**变量的自我更新:**
|
||||
|
||||
```cpp
|
||||
int num1 = 1;
|
||||
num1 = num1 + 7; // 此时 num1 变成了 8
|
||||
```
|
||||
|
||||
**简单写法(书本 P10 第六自然段):**
|
||||
为了让代码更简洁,程序员发明了简写形式:
|
||||
|
||||
* `num1 += 7;` 完全等同于 `num1 = num1 + 7;`
|
||||
* `a += b;` 完全等同于 `a = a + b;`
|
||||
|
||||
---
|
||||
|
||||
## 五、 常量
|
||||
|
||||
*例 1-9(P10 页):求圆的周长面积和体积*
|
||||
|
||||
在计算圆周率 $\pi$ 时,我们需要一个容器来装 `3.14159`。但是,圆周率是一个自然界的真理,在程序运行期间我们**不允许它被意外修改**。
|
||||
|
||||
这时,我们需要使用关键字 **`const`** 来声明一个**常量**。因为在实际的工程中,一个软件是由很多程序员开发的,定义常量就能让别的程序员知道我定义的这个变量不能修改,改了会出问题。
|
||||
|
||||
**常量的规则:**
|
||||
|
||||
1. **必须在声明时就给它初始化**,否则编译直接报错。
|
||||
2. **终生不可更改**,不能再通过赋值符 `=` 修改它。
|
||||
|
||||
```cpp
|
||||
// 声明一个双精度浮点数常量 PI
|
||||
const double PI = 3.14159;
|
||||
// PI = 3.0; // 如果写这行代码,计算机会报错!
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 六、 变量与字符串的区别
|
||||
|
||||
在结合 `cin` 和 `cout` 使用时,初学者最容易在输出格式上栽跟头。请大家仔细观察以下四种写法的输出区别(假设前面已经运行了 `int x = 5, y = 6;`):
|
||||
|
||||
| 代码写法 | 控制台实际输出 | 解析 |
|
||||
| -------------------------- | -------------- | ----------------------------------------- |
|
||||
| `cout << x + y;` | **11** | 没有双引号,执行后台数学计算。 |
|
||||
| `cout << "x+y";` | **x+y** | 有双引号,纯文本复读机,原样输出。 |
|
||||
| `cout << x << "+" << y;` | **5+6** | 变量(抽出数字)与纯文本(加号)的拼接。 |
|
||||
| `cout << "x+y=" << x + y;` | **x+y=11** | 前面输出纯文本提示音 + 后面输出计算结果! |
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
## 六、 综合实战演练
|
||||
|
||||
**练习:理解并练习书本例 1-10(P11 页),猴子吃桃问题**
|
||||
|
||||
**题目描述:** 猴子第一天吃了所有桃子的一半又多吃了一个;第二天又吃了剩下的一半多一个;第三天同理。第四天发现只剩下一个了。问原来有几个?
|
||||
|
||||
**解题思维(逆向):**
|
||||
正向推导较为复杂,但如果运用倒推法,问题就能较为简单的解决。
|
||||
|
||||
* 第四天:剩下 1 个。
|
||||
* 第三天:把第四天的数量加上它贪嘴多吃的那 1 个(吐出来),然后再翻倍。
|
||||
* 第二天、第一天:重复同样的动作。
|
||||
*我们可以利用变量来持续覆盖、更新当前的桃子数。*
|
||||
|
||||
**代码思路:**
|
||||
|
||||
- **第一步:`int peach = 1;`**
|
||||
- 计算机在内存里找了一个整数大小的空抽屉,在抽屉外面贴上了一个标签,名字叫 `peach`(桃子)。然后,把第四天最后剩下的数字 **1**,放进了抽屉里。 *【此时 peach =1】*
|
||||
|
||||
- **第二步:`peach = (peach + 1) * 2;`**
|
||||
- 这行代码在数学上是不成立的,但在编程里,我们要**先看等号右边,再看等号左边**。 计算机先执行右边的计算:它拉开名为 `peach` 的抽屉,发现里面是 1。于是它在后台的大脑里计算 `(1 + 1) * 2`,算出来的结果是 4。 接着,执行等号(赋值)的动作:计算机地把抽屉里原来的 1 扔掉,把刚刚算出来的 **4** 装了进去!这代表第三天开始时有 4 个桃子。 *【此时 peach = 4】*
|
||||
|
||||
- **第三步:`peach = (peach + 1) * 2;`**
|
||||
- 代码跟第二步长得一模一样,但结果完全不同! 计算机再次拉开 `peach` 抽屉,此时里面装的已经是 4 了。计算机在大脑里计算 `(4 + 1) * 2`,得到 10。 然后再次执行覆盖:把 4 扔掉,把 **10** 装进抽屉。这代表第二天开始时有 10 个桃子。 *【此时 peach = 10】*
|
||||
|
||||
- **第四步:`peach = (peach + 1) * 2;`**
|
||||
- 最后一次倒推。拉开抽屉拿出 10,计算 `(10 + 1) * 2`,得到 22。 扔掉 10,把 **22** 放进抽屉里。这代表第一天小猴子刚买回来的桃子总数。 *【此时 peach = 22】*
|
||||
|
||||
- **第五步:`cout << peach;`**
|
||||
- 任务完成!我们 `cout` 输出 `peach` 抽屉,把它现在装的最终数字展示在屏幕上。屏幕上将打印出:**22**。
|
||||
|
||||
**我们全程只用了一个名叫 `peach` 的抽屉,但通过反复使用 `=`(赋值符),我们让抽屉里的数据根据题意进行了变化和覆盖。**
|
||||
|
||||
**程序代码:**
|
||||
|
||||
```cpp
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
int main() {
|
||||
// 1. 申请抽屉并放入第四天的数量
|
||||
int peach = 1;
|
||||
|
||||
// 2. 倒推第三天的数量
|
||||
peach = (peach + 1) * 2;
|
||||
|
||||
// 3. 倒推第二天的数量
|
||||
peach = (peach + 1) * 2;
|
||||
|
||||
// 4. 倒推第一天(刚买回来时)的数量
|
||||
peach = (peach + 1) * 2;
|
||||
|
||||
// 5. 展示抽屉里最终的结果
|
||||
cout << peach << endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,29 @@
|
||||
### 参考答案
|
||||
|
||||
#### **一、 填空题**
|
||||
|
||||
1. 变量
|
||||
2. `int`
|
||||
3. `double`
|
||||
4. 赋值
|
||||
5. `100`
|
||||
6. `+=`
|
||||
7. `const`
|
||||
|
||||
#### **二、 单项选择题**
|
||||
|
||||
1. C (变量名不能以数字开头)
|
||||
2. C
|
||||
3. B
|
||||
4. B
|
||||
5. C
|
||||
6. D (`count = 1;` 是直接赋值,不是在原有基础上加1)
|
||||
|
||||
#### **三、 判断题**
|
||||
|
||||
1. √
|
||||
2. × (在C++中 `=` 是赋值,`==` 才是判断相等)
|
||||
3. × (常量必须在定义时就初始化)
|
||||
4. × (未初始化的变量里存放的是不确定的“垃圾值”)
|
||||
5. √
|
||||
6. √
|
||||
@@ -0,0 +1,73 @@
|
||||
### C++ 变量与常量 课后习题
|
||||
|
||||
姓名: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
#### **一、 填空题**
|
||||
|
||||
1. 在编程中,我们用来存放数据的“容器”,叫做 \_\_\_\_\_\_\_\_。
|
||||
|
||||
2. 如果想定义一个可以存放整数的变量 `age`,代码应该写成:\_\_\_\_\_\_\_\_ `age;`
|
||||
|
||||
3. 如果想定义一个可以存放小数(例如 `1.75`)的变量 `height`,最常用的数据类型关键字是 \_\_\_\_\_\_\_\_。
|
||||
|
||||
4. 在 C++ 中,符号 `=` 不叫“等于”,而叫做 \_\_\_\_\_\_\_\_符。
|
||||
|
||||
5. 阅读代码 `int score = 90; score = 100;`,执行后 `score` 变量中最终存放的值是 \_\_\_\_\_\_\_\_。
|
||||
|
||||
6. 为了让代码 `num = num + 5;` 更简洁,我们可以使用简写形式:`num` \_\_\_\_\_\_\_\_ `5;`
|
||||
|
||||
7. 如果想定义一个值固定为 `3.14` 且不允许被修改的常量 `PI`,需要在定义的最前面加上关键字 \_\_\_\_\_\_\_\_。
|
||||
|
||||
#### **二、 单项选择题**
|
||||
|
||||
( ) 1. 下列哪个是**不合法**的变量名?
|
||||
A. `my_score`
|
||||
B. `num1`
|
||||
C. `1st_place`
|
||||
D. `age`
|
||||
|
||||
( ) 2. 我们用什么数据类型来存放单个字符,比如 `'A'`?
|
||||
A. `int`
|
||||
B. `double`
|
||||
C. `char`
|
||||
D. `bool`
|
||||
|
||||
( ) 3. `int num = 10;` 这行代码中的 `=` 是什么意思?
|
||||
A. 判断 `num` 是否等于 `10`
|
||||
B. 将 `10` 这个数值放进 `num` 变量里
|
||||
C. 声明 `num` 是一个常量
|
||||
D. 将 `num` 的值加上 `10`
|
||||
|
||||
( ) 4. `const` 关键字定义出来的常量,有什么特点?
|
||||
A. 它的值在程序运行中可以被多次修改
|
||||
B. 它必须在定义的时候就给定一个初始值,并且之后不能再修改
|
||||
C. 它只能用来存放整数
|
||||
D. 它不需要指定数据类型
|
||||
|
||||
( ) 5. 阅读以下代码:
|
||||
```cpp
|
||||
int apples = 10;
|
||||
apples = apples - 3;
|
||||
cout << apples;
|
||||
```
|
||||
程序的输出结果是?
|
||||
A. `10`
|
||||
B. `3`
|
||||
C. `7`
|
||||
D. `13`
|
||||
|
||||
( ) 6. 哪条语句和 `count = count + 1;` 是**不等价**的?
|
||||
A. `count += 1;`
|
||||
B. `count++;`
|
||||
C. `++count;`
|
||||
D. `count = 1;`
|
||||
|
||||
#### **三、 判断题 (对的打“√”,错的打“×”)**
|
||||
|
||||
( ) 1. C++ 的变量名可以由字母、数字、下划线组成,但不能以数字开头。
|
||||
( ) 2. 在数学中 `=` 表示等于,在 C++ 中也完全一样,表示判断两边是否相等。
|
||||
( ) 3. 定义一个常量时可以不给它初始值,等需要的时候再赋值。
|
||||
( ) 4. `int num;` 这样定义出来的变量,里面存放的数值一定是 `0`。
|
||||
( ) 5. 当我们写 `score = 95;` 时,如果 `score` 变量里原来存了 `80`,那么 `80` 会被 `95` 覆盖掉。
|
||||
( ) 6. 猴子吃桃问题中,`peach = (peach + 1) * 2;` 这行代码利用了变量值可以被反复更新覆盖的特性。
|
||||
|
||||
Binary file not shown.
Reference in new issue
Block a user