C++基础入门讲义
从输入输出、变量和数据类型开始,建立阅读 C++ 程序的基础
一、输入与输出
cin:把数据输入程序
>> 可以理解为“把输入的数据送进变量”。输入多个数据时可以连续写:
cout:把结果输出
<< 可以理解为“把数据送到输出流”。也可以一次输出多个内容:
cin 和 cout 属于 C++ 标准输入输出工具。竞赛中常写 #include <bits/stdc++.h>,它会导入常用的标准库。二、C++程序基本框架
| 代码 | 作用 |
|---|---|
#include <bits/stdc++.h> | 导入常用工具库 |
using namespace std; | 使用标准命名空间,省去反复书写 std:: |
int main() | 主函数,程序从这里开始运行 |
{ } | 表示一段代码的范围 |
; | 大多数 C++ 语句的结束标志 |
int a = 1; 末尾要有分号;函数、循环和判断的代码块使用花括号。三、变量与基本数据类型
变量可以理解为一块有名字的存储空间。声明变量时,必须说明它准备保存什么类型的数据。
| 类型 | 常见大小 | 保存内容 | 例子 |
|---|---|---|---|
int | 4字节 | 普通整数 | int a = 1; |
long long | 8字节 | 较大的整数 | long long sum; |
float | 4字节 | 小数,精度较低 | float x = 1.3; |
double | 8字节 | 小数,精度较高 | double y = 1.3; |
char | 1字节 | 单个字符 | char c = 'a'; |
bool | 通常1字节 | 真或假 | bool ok = true; |
string | 不固定 | 字符串 | string s = "abc"; |
赋值:把右边的值放入左边
等号 = 在这里表示赋值,不是“判断相等”。
比较:判断两个值是否相等
两个等号 == 才表示比较相等。
四、字符、字符串与数字
单引号:一个字符
字符可以是字母、数字字符、空格或换行符。
双引号:字符串
字符串可以包含多个字符,也可以是空字符串。
| 写法 | 含义 |
|---|---|
0 | 整数 0 |
'0' | 字符“0” |
"0" | 只包含一个字符的字符串 |
char c = "a"; 错误,因为 "a" 是字符串;string s = 'a'; 不符合初学阶段的常规写法,应写成 string s = "a";。五、常用运算符
| 类别 | 运算符 | 作用 | 示例 |
|---|---|---|---|
| 算术运算符 | + - * / % | 加、减、乘、整除、取余 | a % 2 判断奇偶 |
| 赋值运算符 | = += -= *= /= %= | 给变量赋值或更新变量 | sum += x; |
| 关系运算符 | == != > < >= <= | 比较两个值的关系 | a >= b |
| 逻辑运算符 | && || ! | 连接或取反多个条件 | x > 0 && x < 10 |
整数除法与取余
两个整数相除时,结果仍是整数;取余常用于判断奇偶、周期和数字拆分。
条件组合
&& 表示同时满足,|| 表示满足其一,! 表示取反。
六、类型转换
不同类型的数据参与运算时,C++ 可能自动转换类型;也可以使用强制类型转换明确指定结果类型。
隐式转换
表达式中较小范围的类型通常会转换为较大范围的类型。
显式转换
显式转换可以避免整数除法,并让代码意图更清楚。
七、布尔值与分支结构
bool 主要有两种取值:true 表示真,false 表示假。
单分支
双分支
多分支
三目运算符
适合简单的二选一赋值,复杂逻辑仍建议使用 if...else。
switch:按固定值分情况
switch 中通常需要写 break,否则程序会继续执行后面的分支。常见比较运算符:
| 运算符 | 含义 | 例子 |
|---|---|---|
== | 等于 | a == b |
!= | 不等于 | a != b |
>、< | 大于、小于 | a > b |
>=、<= | 大于等于、小于等于 | a >= 18 |
八、循环结构
循环可以把重复执行的代码集中写一次。例如:
如果每次只改变一个数字,就不需要重复写 n 行代码,只需要一个循环。
for 循环格式
while 循环格式
当循环次数明确时常用 for;当重复次数取决于条件是否满足时常用 while。
九、一维数组
一维数组用于保存一组类型相同的数据,适合处理成绩、序列、计数和批量输入。
| 写法 | 含义 |
|---|---|
int a[100]; | 定义最多保存 100 个整数的数组 |
a[i] | 访问下标为 i 的元素 |
i = 0...n-1 | 常见的数组遍历范围 |
使用场景包括:保存一批输入数据、求最大值最小值、统计总和、逆序输出、查找满足条件的元素。
n 的数组通常使用下标 0 到 n-1;访问 a[n] 会越界。十、二进制与存储单位
计算机底层使用二进制,只能识别 0 和 1。
bit:一个二进制位
1 个 bit 只能保存一个二进制位,因此有 2 种可能。
2 个 bit 有 2 × 2 = 4 种组合;8 个 bit 有:
Byte:字节
8 个二进制位组成 1 个字节:
大写 B 表示 Byte,小写 b 通常表示 bit。
| 单位 | 换算 |
|---|---|
| KB | 1 KB = 1024 B |
| MB | 1 MB = 1024 KB |
| GB | 1 GB = 1024 MB |
| TB | 1 TB = 1024 GB |
十一、整数范围与溢出
常见的 32 位 int 使用 32 个二进制位,共有:
有符号整数还要表示正数、负数和 0,因此常见 int 范围是:
int 范围:-2,147,483,648 到 2,147,483,647。当结果可能很大时,应使用 long long:
例如阶乘、组合数、总路程、很大的前缀和,都要先考虑是否会超出 int。
十二、写题前的四步检查
这是整数、小数、字符、字符串还是布尔值?
这是赋值 =,还是比较 ==?
计算结果会不会超出 int?需要不需要 long long?
数组从 0 开始还是从 1 开始?循环会不会越界?
十三、课堂小测
A. char c = "a"; B. char c = 'a'; C. string s = 'a'; D. string s = "a";
a 是否等于 5,应写:A. a = 5 B. a == 5 C. a === 5 D. a => 5
== 表示比较相等,= 表示赋值。A. 0、'0'、"0" 完全相同 B. 1 Byte 等于 8 bit C. int 永远能保存任意大的整数 D. 可能溢出时应考虑 long long
cin >>,输出用 cout <<;比较用 ==,赋值用 =;可能超范围就考虑 long long。