C++ 课程安排
- 第一阶段
1.C++ 基础语法入门
2.对 C++ 有初步了解,能够有基础编程能力
3.通讯录管理系统 - 第二阶段
1.C++ 核心编程
2.介绍 C++ 面向对象编程,为大型项目做铺垫
3.职工管理系统 - 第三阶段
1.C++ 提高编程
2.介绍 C++ 泛型编程思想,以及 STL 的基本使用
3.演讲比赛系统 - 综合案例:机房预约系统
C++ 基础入门
C++ 初识
注释
- 注释一般放在一段代码的上方
变量
- 给一段指定的内存空间起名,方便操作这段内存
数据类型 变量名 = 初始值
- 注:C++ 在创建变量时,必须给变量一个初始值,否则会报错
常量
- 用于记录程序中不可更改的数据
- C++ 定义常量的两种方式
1.define 宏常量【常在文件上方定义】
#define 常量名 常量值
2.const 修饰的变量
const 数据类型 变量名 = 常量值
标识符命名规则
- 标识符命名规则
1.标识符不能是关键字
2.标识符只能由 字母、数字、下划线 组成
3.第一个字符必须为 字母 或 下划线
4.标识符中的字母严格区分大小写
数据类型
- C++ 规定在创建一个变量或常量时,必须指出相应的数据类型,否则无法给变量分配合适的内存
整型
- 短整型 short、整型 int、长整型 long、长长整型 long long 的区别在于所占内存空间不同
- short:2B,(-2^15 ~ 2^15-1)
- int:4B,(-2^31 ~ 2^31-1)
- long:4B(Windows 或 32b Linux) / 8B(64b Linux),(-2^31 ~ 2^31-1)
- long long:8B,(-2^63 ~ 2^63-1)
实型 / 浮点型
- 单精度 float、双精度 double 的区别在于表示的有效数字范围不同
- float:4B,7位有效数字【默认情况下,输出小数显示 6位 有效数字】
- double:8B,15~16位有效数字【默认情况下,输出小数显示 6位 有效数字】【小数默认都为double】
- float vs double
float f1 = 3.14; // 光标移到 3.14 上,实际显示为 double 类型,故不推荐此种写法 float f2 = 3.14f; // 推荐写法 float f3 = 3e2; // 3 * 10^2 float f4 = 3e-2; // 3 * 0.1^2
字符型
- 字符型变量用于显示单个字符
char ch = 'a';
注1:显示字符型变量时,用 单引号 将字符括起来,不要用双引号
注2:单引号内只能有一个字符,不可以是字符串- C / C++ 中字符型变量占用 1B
- 示例
char ch1 = "a"; // 报错,"const char*"类型的值不能用于初始化"char"类型的实体 char ch2 = 'abcdefg'; // 报错,字符常量中的字符过多 cout << (int)ch1 <<endl; // 此种方法可查 ch1 对应的 ASCII码 ch1 = 97; // 可以直接用 ASCII码 给字符型变量赋值
- ASCII码
非打印控制字符:0 ~ 31 分配给了控制字符,用于控制像打印机等一些外围设备
打印字符:32 ~ 126 分配给了能在键盘上找到的字符,当查看 / 打印文档时会出现
字符串型
- C 风格字符串:
char 变量名[] = "字符串值"
【需用双引号括起来】char str1[] = "hello world"; cout << str1 << endl;
- C++ 风格字符串:
string 变量名 = "字符串值"
【需包含头文件#include <string>
】
布尔类型
- bool 类型只有两个值:0、1
- bool 类型占 1B
转义字符
- 用于表示一些不能显示出来的 ASCII 字符
- 常用转义字符
1.\n
:换行,将当前位置移到下一行开头
2.\\
:反斜线字符\
3.\t
:水平制表,跳到下一个 TAB 位置// aaa 和 \t 一共 8bit cout << "aaaa\thelloworld" << endl; // 4 空格 cout << "aa\thelloworld" << endl; // 6 空格 cout << "aaaaaa\thelloworld" << endl; // 2 空格
sizeof 关键字
- sizeof 关键字可以统计数据类型所占内存大小
sizeof(数据类型名 / 变量名)
运算符
- 运算符类型:算术运算符、赋值运算符、比较运算符、逻辑运算符
程序流程结构
- 三种程序运行结构:顺序结构、选择结构、循环结构
选择结构
- if 语句
- 三目运算符
C++ 中三目运算符返回的是变量,可以继续赋值int a = 10, b = 20, c = 0; (a > b ? a : b) = 100; // a = 10, b = 100, c = 0
- switch 语句
注:switch 表达式只能为 整型 / 字符型,不可以为区间。switch 执行效率高switch(表达式) { case 结果1: case 结果2: 语句1; break; // 若无 break,会一直向下执行 ... default: 语句n; break; }
循环结构
- while 循环语句
// 添加随机数种子,利用当前系统时间生成随机数,防止每次随机数都一样 srand((unsigned int)time(NULL)); // rand() % 100 + 1 生成 0 + 1 ~ 99 + 1 伪随机数 int num = rand() % 100 + 1;
- do…while 循环语句
do {语句} while(条件);
【注意分号】【先执行一次循环语句,再判断条件】 - for 循环语句
- 嵌套循环
跳转语句
- break 语句
用于跳出选择结构或循环结构
1.switch 条件语句中,终止 case 并跳出 switch
2.循环语句中,跳出当前的循环语句
3.嵌套循环中,跳出最近的内层循环语句 - continue 语句
在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环
注:continue 并未终止整个循环,break 会跳出循环 - goto 语句:
goto 标记;
如果标记的名称存在,执行到goto语句时,会无条件跳转到标记的位置
程序中不建议使用goto语句,以免造成程序流程混乱int main() { // 1 5 cout << "1" << endl; goto FLAG; cout << "2" << endl; cout << "3" << endl; cout << "4" << endl; FLAG: cout << "5" << endl; system("pause"); return 0; }
数组
一维数组
- 一维数组定义的三种方式:
1.数据类型 数组名[ 数组长度 ];
2.数据类型 数组名[ 数组长度 ] = { 值1,值2 ...};
3.数据类型 数组名[ ] = { 值1,值2 ...};
int main() { int score[10]; // 定义方式1 score[0] = 100; cout << score[0] << endl; int score2[10] = { 100, 90,80,70,60,50,40,30,20,10 }; // 定义方式2【如果{}内不足10个数据,剩余数据用0补全】 for (int i = 0; i < 10; i++) { cout << score2[i] << endl; } int score3[] = { 100,90,80,70,60,50,40,30,20,10 }; // 定义方式3 for (int i = 0; i < 10; i++) { cout << score3[i] << endl; } system("pause"); return 0; }
- 一维数组数组名
1.可统计整个数组在内存中的长度
2.可获取数组在内存中的首地址
注:数组名是常量,因此不可以赋值int main() { int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; cout << "整个数组所占内存空间为: " << sizeof(arr) << endl; cout << "每个元素所占内存空间为: " << sizeof(arr[0]) << endl; cout << "数组的元素个数为: " << sizeof(arr) / sizeof(arr[0]) << endl; cout << "数组首地址为: " << (int)arr << endl; cout << "数组中第一个元素地址为: " << (int)&arr[0] << endl; // 注意取值符号 cout << "数组中第二个元素地址为: " << (int)&arr[1] << endl; //arr = 100; 错误,数组名是常量,因此不可以赋值 system("pause"); return 0; }
- 示例
// 数组元素逆置