第1章 计算机基础知识 1
1.1 计算机系统与工作原理 1
1.1.1 计算机系统的组成 1
1.1.2 计算机硬件系统 2
1.1.3 计算机软件系统 4
1.1.4 计算机的工作原理 6
1.2 数制与编码 7
1.2.1 数制的基本概念 7
1.2.2 常用的数制 7
1.2.3 数制间的转换 11
1.2.4 数据在计算机中的表示方式 13
1.2.5 字符编码 16
1.2.6 汉字编码 18
1.2.7 存储单位 21
1.3 个人计算机的基本配置及性能指标 22
1.3.1 硬件 22
1.3.2 操作系统 24
1.4 习题 25
第2章 C语言概述 28
2.1 C语言的发展历史 28
2.2 C语言的特点 29
2.3 C语言程序设计初步 30
2.3.1 简单的C程序示例 30
2.3.2 C程序结构 32
2.4 C程序在计算机上的执行步骤 33
2.5 习题 34
第3章 基本数据类型与常用库函数 36
3.1 字符集与标识符 36
3.2 数据类型与基本数据类型 37
3.2.1 数据类型 37
3.2.2 基本数据类型 38
3.3 常量与变量 39
3.3.1 常量 39
3.3.2 符号常量 41
3.3.3 变量 41
3.4 输入/输出函数 42
3.4.1 字符输入/输出函数 42
3.4.2 格式输出函数printf 43
3.4.3 格式输入函数scanf 46
3.5 常用库函数 48
3.6 习题 49
第4章 运算符和表达式 52
4.1 算术运算符和算术表达式 52
4.2 自增和自减运算 55
4.3 位运算 55
4.4 赋值运算 59
4.5 关系运算与逻辑运算 60
4.5.1 关系运算 60
4.5.2 逻辑运算 62
4.6 条件表达式与逗号表达式 63
4.6.1 条件表达式 63
4.6.2 逗号表达式 64
4.7 习题 65
第5章 C语言的控制结构 67
5.1 算法与程序 67
5.1.1 算法 67
5.1.2 程序 68
5.2 顺序结构 69
5.3 选择结构 69
5.3.1 if语句 70
5.3.2 switch语句 74
5.4 循环结构 78
5.4.1 while语句 78
5.4.2 do-while语句 80
5.4.3 for语句 81
5.4.4 break语句 82
5.4.5 continue语句 83
5.4.6 单重循环结构 84
5.4.7 多重循环结构 86
5.5 习题 88
第6章 数组 92
6.1 一维数组 92
6.1.1 一维数组的定义 92
6.1.2 一维数组的存储形式 93
6.1.3 一维数组的初始化 93
6.1.4 一维数组的引用 94
6.1.5 一维数组应用举例 94
6.2 二维数组 98
6.2.1 二维数组的定义 98
6.2.2 二维数组的存储形式 99
6.2.3 二维数组的初始化 99
6.2.4 二维数组的引用 99
6.2.5 二维数组应用举例 100
6.3 字符数组 102
6.3.1 字符数组的定义 102
6.3.2 字符数组的初始化 102
6.3.3 字符数组的输入/输出 103
6.3.4 常用字符串处理函数 104
6.3.5 二维字符数组 107
6.3.6 字符串应用举例 110
6.4 习题 111
第7章 函数 114
7.1 函数定义和函数调用 114
7.1.1 函数定义 114
7.1.2 return语句 116
7.1.3 函数调用 117
7.1.4 函数声明 118
7.1.5 函数间的参数传递 119
7.2 函数的嵌套调用和递归调用 121
7.2.1 函数的嵌套调用 121
7.2.2 函数的递归调用 122
7.3 局部变量和全局变量 126
7.3.1 局部变量 126
7.3.2 全局变量 126
7.4 变量的存储类别 129
7.4.1 自动变量 129
7.4.2 静态变量 130
7.4.3 寄存器变量 131
7.5 内部函数和外部函数 131
7.6 习题 132
第8章 编译预处理 137
8.1 宏定义 137
8.1.1 不带参数的宏定义 137
8.1.2 带参数的宏定义 138
8.1.3 终止宏定义的作用域 140
8.2 文件包含 140
8.3 条件编译 141
8.4 习题 143
第9章 指针 145
9.1 指针概述 145
9.1.1 指针的概念 145
9.1.2 指针变量 146
9.1.3 指针运算 148
9.1.4 将指针作为函数的参数 149
9.2 指针与一维数组 151
9.2.1 一维数组元素的表示 151
9.2.2 将数组名作为函数的参数 153
9.3 指针与二维数组 156
9.3.1 二维数组中的指针 156
9.3.2 指向二维数组元素的指针变量 157
9.3.3 将二维数组的行指针作为函数的参数 159
9.4 指针与字符串 161
9.4.1 字符串的表示形式 161
9.4.2 将字符串指针作为函数的参数 163
9.5 指针与函数 164
9.5.1 指向函数的指针 164
9.5.2 返回指针的函数 165
9.6 指针数组与多级指针 166
9.6.1 指针数组的概念 166
9.6.2 多级指针的概念 167
9.7 习题 168
第10章 结构体与共用体 173
10.1 结构体类型的定义 173
10.2 结构体变量 174
10.2.1 结构体变量的定义 174
10.2.2 结构体变量的引用 176
10.3 结构体数组 177
10.3.1 结构体数组的定义与初始化 177
10.3.2 结构体数组的引用 178
10.4 结构体和指针 179
10.5 结构体和函数 181
10.5.1 结构体作为函数的参数 181
10.5.2 返回结构体的函数 183
10.6 链表 185
10.6.1 简单链表 185
10.6.2 处理动态链表所需的库函数 186
10.6.3 单向链表的基本操作 188
10.7 共用体 195
10.8 枚举 197
10.9 使用typedef定义类型别名 198
10.10 习题 199
第11章 文件 204
11.1 文件的基本概念 204
11.2 文件的打开与关闭 205
11.2.1 文件类型的指针变量 205
11.2.2 文件的打开 205
11.2.3 文件的关闭 206
11.3 文件的读写 207
11.3.1 字符读写函数fgetc和fputc 207
11.3.2 字符串读写函数fgets和fputs 209
11.3.3 数据块读写函数fread和fwrite 210
11.3.4 格式化读写函数fscanf和fprintf 212
11.4 文件的随机读写 213
11.4.1 文件的定位 213
11.4.2 进行文件的随机读写 214
11.5 习题 215
参考文献 217
附录A C语言中的关键字 218
附录B 字符与ASCII码对照表 219
附录C 运算符的优先级与结合性 221
附录D 常用库函数 223
附录E 习题参考解答 229
附录F 微课视频目录 273