上篇C语言篇 3
第1章 计算思维与C语言概述 3
1.1计算思维与程序设计语言 3
1.1.1二进制思维与程序设计语言的分类 3
1.1.2计算思维与程序设计 5
1.1.3计算思维在C语言程序设计中的应用 5
1.2 C程序的基本结构 5
1.2.1注释 6
1.2.2预处理 6
1.2.3主程序 6
1.3 C程序的编译 7
1.3.1 UNIX操作系统的CC编译器 8
1.3.2 Linux操作系统的GCC编译器 8
1.3.3 Windows操作系统的集成开发环境 8
第2章C语言程序的基本元素与顺序结构程序设计 10
2.1 C语言程序的基本元素 10
2.1.1变量和常量及数据类型 10
2.1.2表达式 13
2.1.3数据的输入与输出 15
2.2顺序结构程序设计 18
2.2.1语句 18
2.2.2构造程序 19
2.2.3编程风格 20
2.3实训与实训指导 20
实训1字母大小写的转换 20
实训2两数相除 21
实训3交换两个数的值 23
实训4输出随机数 24
第3章 逻辑运算与选择结构程序设计 26
3.1选择结构程序的构成 26
3.1.1关系运算符与关系表达式 27
3.1.2逻辑运算符与逻辑表达式 28
3.1.3 if …else选择结构 28
3.1.4条件运算符和条件表达式 30
3.1.5 switch …case选择结构 31
3.2实训与实训指导 33
实训1判断奇数/偶数 33
实训2根据利润计算应发放的奖金 35
实训3判断闫年 38
实训4利用海伦公式计算三角形面积 40
第4章 重复运算与循环结构程序设计 42
4.1三种循环语句 42
4.1.1 while语句 43
4.1.2 do …while语句 43
4.1.3 for语句 44
4.1.4使用break语句退出循环 46
4.1.5使用continue语句跳过循环体语句 47
4.2批量数据处理——数组 48
4.2.1一维数组 48
4.2.2字符串与字符数组 50
4.2.3二维数组 53
4.3实训与实训指导 56
实训1数制转换 56
实训2输出乘法表 57
实训3兑换硬币 59
实训4冒泡排序 60
第5章 过程封装——函数 62
5.1函数的定义和调用 62
5.1.1函数的定义 63
5.1.2函数的返回 64
5.1.3函数的调用 65
5.1.4函数调用过程 66
5.1.5函数参数的值传递 67
5.1.6函数的声明 70
5.2局部变量和全局变量 73
5.2.1代码块 73
5.2.2局部变量 74
5.2.3全局变量 76
5.2.4作用域规则 78
5.3变量的存储类型 80
5.3.1 auto变量 80
5.3.2 register变量 80
5.3.3 static变量 81
5.3.4 extern变量 84
5.4实训与实训指导 86
实训1直角三角形 86
实训2一元二次方程的根 88
实训3完美数 89
实训4玫瑰花数 91
第6章 数据的间接访问——指针 95
6.1指针的基本概念 95
6.1.1指针与地址 95
6.1.2指针变量的定义 96
6.1.3指针变量的初始化与赋值 96
6.1.4指针变量的访问 97
6.2指针与数组 98
6.2.1用指针操作数组 98
6.2.2动态内存分配 99
6.2.3数组作为函数参数 101
6.3指针数组和指向指针的指针 103
6.3.1指针数组 103
6.3.2指向指针的指针 105
6.4指针作为函数的形参 106
6.5函数指针和指针函数 108
6.5.1函数指针 108
6.5.2函数指针作为函数参数——回调函数 111
6.5.3指针函数 112
6.6实训与实训指导 115
实训1将整型数转换为字符串 115
实训2日期转换函数 116
实训3字符串排序 118
实训4函数指针应用 120
第7章 函数的自我调用——递归 122
7.1递归 122
7.1.1递归的思想 123
7.1.2递归的递推 123
7.1.3递归的回归 124
7.1.4递归的条件 125
7.1.5递归的实现 125
7.2迭代与递归 126
7.2.1递归实现 126
7.2.2迭代实现 127
7.2.3递归与迭代的关系 128
7.3实训与实训指导 129
实训1走台阶 129
实训2换汽水 130
实训3排列数 132
实训4汉诺塔 134
第8章 数据封装——用户自定义数据类型 136
8.1结构体的定义与使用 136
8.1.1定义结构体类型和结构体变量 137
8.1.2初始化结构体变量 139
8.1.3访问结构体成员 140
8.1.4结构体作为函数参数或返回值 141
8.2结构体实训与实训指导 144
实训1计算三维空间中两点之间的距离 144
实训2利用结构体数组存储一元多项式并输出 145
实训3创建简单链表 147
实训4使用链表存储一元多项式并输出 148
8.3使用FILE结构体类型的文件操作 152
8.3.1文件的打开与关闭 152
8.3.2文本文件的读写 154
8.3.3二进制文件的读写 157
8.3.4文件的格式化输入与输出 159
8.4共用体 161
8.4.1共用体类型及其变量的定义 161
8.4.2共用体的使用 163
8.5枚举类型 166
8.5.1枚举及其变量的定义 167
8.5.2枚举的使用 168
下篇C++语言篇 173
第9章 面向对象思维与C++语言概述 173
9.1面向对象思维 173
9.1.1 C语言的面向过程思维 173
9.1.2 C++语言的面向对象思维 174
9.1.3面向对象的基本概念 174
9.2 C++语言对C语言的扩充 175
9.2.1 C++常变量 176
9.2.2 C++的基本输入输出 176
9.2.3 C++修饰符类型 178
9.2.4 C++字符串 179
9.2.5 C++引用 182
9.2.6 C++重载函数 184
9.2.7 C++函数模板 185
9.2.8 C++动态内存 186
9.2.9 C++异常处理 187
9.3 C++程序的编译 189
9.4实训与实训指导 189
实训1旋转魔方阵 189
实训2删除重复字符 192
实训3字符串全排列 195
实训4求两组整数的异或集 196
第10章 数据与过程的封装——类及其实训 199
10.1定义类与对象 199
10.1.1定义类 200
10.1.2声明对象 203
10.1.3操作对象 203
10.1.4对象的内存分配与this指针 204
10.2对象的构造与析构 205
10.2.1构造函数 206
10.2.2复制构造函数 208
10.2.3析构函数 208
10.3 const与数据保护 211
10.3.1常数据成员 211
10.3.2常成员函数 212
10.3.3常对象 213
10.3.4对象的常引用 213
10.4类的静态成员与数据共享 214
10.4.1静态数据成员 215
10.4.2静态成员函数 215
10.4.3静态常量成员 217
10.5类的对象成员——类的组合 217
10.5.1声明类的对象成员 218
10.5.2在成员函数中使用类的对象成员 219
10.6友元 220
10.6.1友元函数 220
10.6.2友元类 221
10.7实训与实训指导 222
实训1分数类 222
实训2时钟类 224
实训3随机数类 226
实训4约瑟夫环类 228
第11章 对象运算——运算符重载及其实训 233
11.1运算符重载的方法 233
11.1.1运算符重载函数作为友元函数 234
11.1.2运算符重载函数作为成员函数 235
11.1.3运算符重载的限制 237
11.2特殊运算符的重载 237
11.2.1输入/输出运算符重载 238
11.2.2赋值运算符重载 240
11.2.3函数调用运算符重载 241
11.2.4下标运算符重载 242
11.3自定义类型与基本类型之间的转换 243
11.3.1基本类型到自定义类型的转换 243
11.3.2自定义类型到基本类型的转换 244
11.4实训与实训指导 245
实训1二维数组类 245
实训2布尔类 246
实训3随机类运算符重载 251
实训4一元多项式类 252
第12章 代码重用——类的继承、多态与模板 258
12.1类的继承与派生 258
12.1.1基类的定义 259
12.1.2派生类的定义与继承方式 260
12.1.3派生类的构造函数和析构函数 261
12.1.4重定义基类的成员函数 261
12.1.5派生类的定义 262
12.1.6类的多层派生 264
12.2多重继承 266
12.2.1多重继承的声明 269
12.2.2多重继承派生类对象的定义 270
12.2.3虚基类 271
12.3多态性与虚函数 272
12.3.1派生类对象向基类对象的转换 273
12.3.2虚函数 274
12.3.3纯虚函数 277
12.3.4抽象类 277
12.4类模板和泛型编程 278
12.4.1类模板的定义 279
12.4.2类模板的实例化 281
12.4.3类模板的友元 282
12.5实训与实训指导 284
实训1泛化的链表类 284
实训2图书馆系统中的读者类 286
实训3读者库 290
附录 292
参考文献 295