GESPCpp/C++1级/GESP一级知识总结.md
sairate 60f18fb5f2 docs(GESPc++): 添加 GESP 一级知识总结文档
- 新增 GESP 一级知识总结 Markdown 文件
- 内容涵盖计算机历史、变量、数据类型、运算符、逻辑结构、输入输出语句等
- 添加 Intellij IDEA 项目配置文件
- 更新 .gitignore 文件
2025-07-12 16:51:16 +08:00

388 lines
10 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.

## GESP一级考点分析
![image-20241016133120255](C:\Users\14176\AppData\Roaming\Typora\typora-user-images\image-20241016133120255.png)
### 1.计算机历史
> 详细参考[信息学发展史(近代版)](https://markdocs.sairate.top/basic/program/%E4%BF%A1%E6%81%AF%E5%AD%A6%E5%8F%91%E5%B1%95%E5%8F%B2%28%E8%BF%91%E7%8E%B0%E4%BB%A3%29/)
- 艾伦**·**图灵:提出图灵机概念,奠定现代计算机科学理论基础
- 克劳·德香农提出了信息论的基本框架。香农提出了“比特”bit作为信息的基本度量单位并定义了信息熵描述了信息的不确定性。
- 冯·诺依曼架构设计了一个具有存储程序能力的计算机架构这一架构被称为“冯·诺依曼架构”。它将计算机的五个基本组件输入设备、输出设备、存储器、控制单元和算术逻辑单元ALU分离开来。这个架构成为现代计算机设计的基础。
- **ENIAC**1946年ENIAC电子数值积分计算机是世界上第一台通用电子计算机。
### 2.变量
- **定义**:在 C++ 中,定义变量时会分配内存空间。例如:
```
int age; // 声明一个整数变量 age
```
- **声明**:可以在同一行中同时声明和定义多个变量:
```
nt x = 5, y = 10; // 同时声明并初始化两个整数变量
```
### 3.数据类型
C++ 提供了一系列内置数据类型,用于存储不同类型的数据。
##### 整数类型
- **int**:标准整数类型,通常为 4 字节32 位),表示的范围一般为 -2,147,483,648 到 2,147,483,647。
- **short**:短整型,通常为 2 字节16 位),范围为 -32,768 到 32,767。
- **long**:长整型,通常为 4 字节32 位)或 8 字节64 位),取决于平台。
- **long long**:至少为 8 字节64 位),用于表示更大的整数。
- **unsigned**:无符号整数类型,不包含负值。例如,`unsigned int` 的范围为 0 到 4,294,967,295。
##### 浮点数类型
- **float**:单精度浮点数,通常为 4 字节,适合存储较小范围的浮点数。精度约为 6 位有效数字。
- **double**:双精度浮点数,通常为 8 字节,适合存储更大范围的浮点数。精度约为 15 位有效数字。
- **long double**:长双精度浮点数,通常为 10、12 或 16 字节,具体取决于实现,提供更高的精度。
##### 字符类型
- **char**:用于存储单个字符,通常为 1 字节8 位)。可以表示 ASCII 字符集中的字符。
- **wchar_t**:宽字符类型,通常为 2 或 4 字节,主要用于表示 Unicode 字符。
##### 布尔类型
- **bool**:表示布尔值,只有两个取值:`true`(真)和 `false`(假)。通常为 1 字节。
### 4.运算符
C++ 中的运算符用于执行各种操作,分为几类。以下是运算符的详细介绍:
##### 1. 算术运算符
这些运算符用于执行数学计算。
| 运算符 | 描述 | 示例 |
| ------ | -------------------- | ------- |
| `+` | 加法 | `a + b` |
| `-` | 减法 | `a - b` |
| `*` | 乘法 | `a * b` |
| `/` | 除法(整除和浮点数) | `a / b` |
| `%` | 取模(余数) | `a % b` |
##### 2. 关系运算符
这些运算符用于比较两个值,并返回布尔值 (`true``false`)。
| 运算符 | 描述 | 示例 |
| ------ | ---------- | -------- |
| `==` | 等于 | `a == b` |
| `!=` | 不等于 | `a != b` |
| `>` | 大于 | `a > b` |
| `<` | 小于 | `a < b` |
| `>=` | 大于或等于 | `a >= b` |
| `<=` | 小于或等于 | `a <= b` |
##### 3. 逻辑运算符
用于执行布尔逻辑运算。
| 运算符 | 描述 | 示例 |
| ------ | ------------- | -------- |
| `&&` | 逻辑与AND | `a && b` |
| `||` | 逻辑或OR | `a || b` |
| `!` | 逻辑非NOT | `!a` |
##### 5. 赋值运算符
用于给变量赋值。可以与其他运算符结合使用。
| 运算符 | 描述 | 示例 |
| ------ | ------------ | --------- |
| `=` | 赋值 | `a = b` |
| `+=` | 加法赋值 | `a += b` |
| `-=` | 减法赋值 | `a -= b` |
| `*=` | 乘法赋值 | `a *= b` |
| `/=` | 除法赋值 | `a /= b` |
| `%=` | 取模赋值 | `a %= b` |
| `&=` | 按位与赋值 | `a &= b` |
| `|=` | 按位或赋值 | `a |= b` |
| `^=` | 按位异或赋值 | `a ^= b` |
| `<<=` | 左移赋值 | `a <<= 2` |
| `>>=` | 右移赋值 | `a >>= 2` |
##### 6. 自增和自减运算符
用于增加或减少变量的值。
| 运算符 | 描述 | 示例 |
| ------ | ------------------ | ---------------------------- |
| `++` | 自增(++a 或 a++ | `a++`(后置),`++a`(前置) |
| `--` | 自减(--a 或 a-- | `a--`(后置),`--a`(前置) |
### 5.逻辑结构
在 C++ 编程中,逻辑结构主要涉及控制程序流的结构。逻辑结构决定了代码执行的顺序以及条件和循环的处理方式。以下是 C++ 中的主要逻辑结构:
##### 1. 顺序结构
顺序结构是指程序从上到下逐行执行,没有任何跳转或分支。最基本的代码执行方式。
```cpp
#include <iostream>
using namespace std;
int main() {
cout << "Hello, World!" << endl;
cout << "This is a sequential structure." << endl;
return 0;
}
```
##### 2. 选择结构(条件结构)
选择结构允许程序根据条件执行不同的代码块。C++ 中常用的选择结构有 `if``else if``switch`
###### 2.1 `if` 语句
```cpp
if (condition) {
// 条件为真时执行的代码
} else {
// 条件为假时执行的代码
}
```
示例:
```cpp
int a = 10;
if (a > 0) {
cout << "a is positive." << endl;
} else {
cout << "a is non-positive." << endl;
}
```
###### 2.2 `else if` 语句
可以处理多个条件。
```cpp
if (condition1) {
// 条件1为真时执行的代码
} else if (condition2) {
// 条件1为假 条件2为真时执行的代码
} else {
// 所有条件都为假时执行的代码
}
```
示例:
```cpp
int score = 85;
if (score >= 90) {
cout << "Grade: A" << endl;
} else if (score >= 80) {
cout << "Grade: B" << endl;
} else {
cout << "Grade: C" << endl;
}
```
###### 2.3 `switch` 语句
用于基于变量的值执行不同的代码块。
```cpp
switch (expression) {
case constant1:
// 执行代码块1
break;
case constant2:
// 执行代码块2
break;
default:
// 默认执行的代码块
}
```
示例:
```cpp
int day = 3;
switch (day) {
case 1:
cout << "Monday" << endl;
break;
case 2:
cout << "Tuesday" << endl;
break;
case 3:
cout << "Wednesday" << endl;
break;
default:
cout << "Invalid day" << endl;
}
```
##### 3. 循环结构
循环结构允许重复执行代码块直到满足特定条件。C++ 中常用的循环结构有 `for``while``do...while`
###### 3.1 `for` 循环
用于在已知次数的情况下执行循环。
```cpp
for (initialization; condition; increment) {
// 循环体
}
```
示例:
```cpp
for (int i = 0; i < 5; i++) {
cout << "Iteration: " << i << endl;
}
```
###### 3.2 `while` 循环
在条件为真时重复执行代码块。
```cpp
while (condition) {
// 循环体
}
```
示例:
```cpp
int i = 0;
while (i < 5) {
cout << "Iteration: " << i << endl;
i++;
}
```
###### 3.3 `do...while` 循环
先执行一次循环体,然后检查条件。
```cpp
do {
// 循环体
} while (condition);
```
示例:
```cpp
int i = 0;
do {
cout << "Iteration: " << i << endl;
i++;
} while (i < 5);
```
##### 4. 跳转结构
跳转结构用于改变程序的执行流,常见的有 `break``continue``return`
- `break`:终止当前循环或 `switch` 语句。
- `continue`:跳过当前循环的剩余部分,开始下一次循环。
- `return`:从函数返回,结束函数的执行。
示例:
```cpp
for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // 退出循环
}
cout << "Iteration: " << i << endl;
}
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue; // 跳过偶数
}
cout << "Odd number: " << i << endl;
}
```
### 6.输入输出语句
在 C++ 中输入输出操作主要通过流stream来实现。以下是关于输入输出语句的详细介绍
##### 1. 输出语句
C++ 使用 `cout` 对象进行输出,通常配合流插入运算符 `<<` 使用。
###### 示例:
```cpp
#include <iostream>
using namespace std;
int main() {
int age = 20;
cout << "Your age is: " << age << endl; // 输出Your age is: 20
return 0;
}
```
###### 格式化输出
C++ 可以通过 `<iomanip>` 头文件中的函数进行格式化输出。
- `setw(int n)`:设置输出字段宽度。
- `setprecision(int n)`:设置浮点数的精度。
```cpp
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double pi = 3.14159;
cout << fixed << setprecision(2) << "Pi: " << pi << endl; // 输出Pi: 3.14
cout << setw(10) << "Hello" << endl; // 输出: Hello
return 0;
}
```
##### 2. 输入语句
C++ 使用 `cin` 对象进行输入,通常配合流提取运算符 `>>` 使用。
###### 示例:
```cpp
#include <iostream>
using namespace std;
int main() {
int age;
cout << "Enter your age: ";
cin >> age; // 输入20
cout << "Your age is: " << age << endl; // 输出Your age is: 20
return 0;
}
```
###### 处理输入错误
可以通过检查 `cin` 的状态来处理输入错误。
```cpp
#include <iostream>
using namespace std;
int main() {
int age;
cout << "Enter your age: ";
if (cin >> age) {
cout << "Your age is: " << age << endl;
} else {
cout << "Invalid input!" << endl;
}
return 0;
}
```
###### 读取多个输入
可以使用空格或换行符分隔多个输入。
```cpp
#include <iostream>
using namespace std;
int main() {
int a, b;
cout << "Enter two numbers: ";
cin >> a >> b; // 输入5 10
cout << "Sum: " << (a + b) << endl; // 输出Sum: 15
return 0;
}
```