目 录
第1章 C语言程序设计概述 1
1.1 C语言程序的基本组成 1
1.2 C语言程序设计的一般步骤 4
1.3 C语言程序的上机执行过程 6
1.4 C语言程序设计学习方法 10
1.4.1 为什么要学习C语言程序设计10
1.4.2 如何学习C语言程序设计来培养计算思维 11
1.5 案例:程序的铭牌 12
本章小结 13
习题 13
第2章 C语言基础 15
2.1 C语言的字符集 15
2.2 标识符 15
2.2.1 保留字 16
2.2.2 用户自定义标识符 16
2.3 数据与C语言的数据类型 16
2.3.1 整型数据类型 17
2.3.2 实型数据类型 19
2.3.3 字符型数据类型 20
2.4 常量 20
2.4.1 整型常量 21
2.4.2 实型常量 21
2.4.3 字符常量 22
2.4.4 字符串常量 22
2.4.5 符号常量 23
2.5 变量 24
2.6 运算符 25
2.6.1 算术运算 26
2.6.2 关系运算 28
2.6.3 逻辑运算 29
2.6.4 赋值运算 30
2.6.5 逗号运算 32
2.6.6 条件运算符和条件表达式 32
2.6.7 sizeof运算符 33
2.6.8 类型转换 34
2.7 数据的输入/输出 37
2.7.1 字符数据的输入/输出 37
2.7.2 格式化输出和输入函数 38
2.8 案例:鸡兔同笼 44
本章小结 45
习题 47
第3章 程序设计基本结构 51
3.1 顺序结构 51
3.2 条件判断——选择结构 53
3.2.1 if 语句 53
3.2.2 switch 语句 61
3.3 一遍又一遍——循环结构 63
3.3.1 while 循环语句 63
3.3.2 for 循环语句 64
3.3.3 do…while 循环语句 67
3.3.4 break和continue语句 69
3.3.5 三种循环语句的比较 71
3.3.6 循环嵌套 72
3.4 应用举例 73
3.4.1 一般计算问题 73
3.4.2 穷举法求解问题 77
3.4.3 递推和迭代法求解问题 78
3.4.4 用嵌套的循环求解问题 82
3.5 案例:基因信息处理 84
本章小结 87
习题 88
第4章 数组 99
4.1 数组的基本概念 99
4.2 一维数组 100
4.2.1 一维数组的定义 100
4.2.2 一维数组的引用 101
4.2.3 一维数组的初始化 102
4.2.4 一维数组的应用 102
4.3 二维数组 110
4.3.1 二维数组的定义 110
4.3.2 二维数组的引用 111
4.3.3 二维数组的初始化 111
4.3.4 二维数组的应用 112
4.4 字符数组 114
4.4.1 字符数组的定义 114
4.4.2 字符数组的初始化 114
4.4.3 字符数组的引用 115
4.4.4 字符串的输入/输出 116
4.4.5 字符串处理函数 119
4.4.6 应用举例 121
4.5 案例:抽奖嘉年华 123
本章小结 125
习题 126
第5章 指针 135
5.1 指针的概念 135
5.1.1 内存地址和指针 135
5.1.2 指针变量的声明 136
5.1.3 取地址运算符和间接寻址运算符 137
5.1.4 指针变量的引用 138
5.2 指针与数组 139
5.2.1 指针的算术运算 140
5.2.2 指针的比较运算 141
5.2.3 指针与一维数组 142
5.2.4 指针与二维数组 143
5.3 指针与字符串 148
5.3.1 字符型指针变量与字符串 148
5.3.2 字符指针变量与字符数组 150
5.4 指针数组 151
5.4.1 指针数组的定义 151
5.4.2 指针数组的应用 151
5.5 多级指针 154
5.6 函数指针 156
5.7 动态内存分配 158
5.7.1 动态内存分配函数 158
5.7.2 动态内存空间的使用 160
5.8 案例:括号匹配问题 162
本章小结 164
习题 165
第6章 函数 169
6.1 函数的定义与调用 170
6.1.1 函数的定义 170
6.1.2 函数调用 172
6.2 函数间的数据传递 176
6.2.1 通过参数传递 176
6.2.2 通过函数返回值传递 184
6.2.3 函数设计的原则 185
6.3 变量的作用域和生存周期 185
6.3.1 变量的作用域 185
6.3.2 变量的生存周期 189
6.4 函数的嵌套调用和递归调用 193
6.4.1 函数的嵌套调用 193
6.4.2 函数的递归调用 195
6.5 main函数带参数 197
6.6 案例:线性回归分析预测 198
本章小结 201
习题 202
第7章 结构体、共用体与枚举类型 207
7.1 结构体 207
7.1.1 结构体的定义 208
7.1.2 结构体变量 209
7.1.3 结构体数组 213
7.1.4 结构体指针 216
7.1.5 结构体与函数 219
7.2 共用体 223
7.2.1 共用体的定义 224
7.2.2 共用体变量的定义 224
7.2.3 共用体变量的引用 225
7.3 枚举类型 228
7.3.1 枚举类型的定义 228
7.3.2 枚举变量的定义和引用 228
7.4 typedef类型定义 230
7.5 链表 231
7.6 案例:KNN预测学生学习风格 236
本章小结 239
习题 239
第8章 文件 251
8.1 文件概述 251
8.1.1 什么是文件 251
8.1.2 文本文件和二进制文件 252
8.1.3 文件类型指针 252
8.1.4 文件操作 253
8.2 文件的打开与关闭 254
8.2.1 打开文件 254
8.2.2 关闭文件 256
8.3 文件的读写操作 256
8.3.1 按字符读写文件 257
8.3.2 按格式读写文件 261
8.3.3 按数据块读写文件 263
8.4 文件的定位 266
8.5 文件出错检测 268
8.6 案例:打字练习程序 268
本章小结 271
习题 272
第9章 底层程序设计 275
9.1 位运算符 275
9.1.1 按位逻辑运算 276
9.1.2 移位运算 280
9.1.3 位运算赋值运算符 282
9.2 位段 283
9.3 案例:查看内存单元 286
本章小结 287
习题 288
第10章 编译预处理 289
10.1 #include文件包含命令 289
10.2 #define宏定义 291
10.2.1 不带参数的宏定义 291
10.2.2 带参数的宏定义 292
10.3 条件编译 294
10.4 编写大型程序 296
10.5 案例:数据压缩和解压缩 297
本章小结 301
习题 301
附 录 302
附录A 字符与ASCII码对照表 302
附录B 运算符和结合性 303
附录C C语言中的关键字 304
附录D C语言常用的库函数 304
