第1章 程序设计基础知识 1
1.1 计算思维与自动化计算 1
1.1.1 科学思维及其分类 1
1.1.2 计算思维的概念与特征 2
1.1.3 计算思维的举例——自动化计算 3
1.2 计算机内的数据表示 4
1.2.1 数制及其转换 4
1.2.2 原码、反码及补码 6
1.2.3 定点数及浮点数 8
1.3 程序与算法 9
1.3.1 程序及算法的概念 9
1.3.2 算法的特点及评价标准 10
1.3.3 算法的表示 10
1.4 C语言简介 13
1.4.1 程序设计语言 13
1.4.2 C语言的历史 14
1.4.3 C语言的特点 14
1.4.4 C程序的结构 15
1.4.5 C程序的运行步骤 17
习题 19
第2章 C程序设计初步 20
2.1 常量和变量 20
2.1.1 C语言的基本词法 20
2.1.2 常量 21
2.1.3 变量 23
2.2 简单的数据类型 24
2.2.1 整型 24
2.2.2 实型 26
2.2.3 字符型 26
2.3 输入/输出函数 27
2.3.1 字符输出函数 27
2.3.2 字符输入函数 28
2.3.3 格式输出函数 30
2.3.4 格式输入函数 34
2.4 运算符及表达式 36
2.4.1 算术运算符 37
2.4.2 赋值运算符 39
2.4.3 自增、自减运算符 41
2.4.4 关系运算符 44
2.4.5 逻辑运算符 46
2.4.6 条件运算符 49
2.4.7 逗号运算符 51
2.4.8 位运算符 52
2.5 类型转换 55
2.5.1 自动类型转换 56
2.5.2 强制类型转换 56
习题 57
第3章 结构化程序设计及控制语句 62
3.1 C语句概述 62
3.1.1 表达式语句 62
3.1.2 控制语句 62
3.1.3 函数调用语句 63
3.1.4 空语句 63
3.1.5 复合语句 63
3.2 顺序结构及实现 63
3.2.1 顺序结构程序设计思想 63
3.2.2 赋值语句 64
3.2.3 顺序结构程序设计举例 65
3.3 选择结构及实现 66
3.3.1 选择结构程序设计思想 66
3.3.2 if语句 66
3.3.3 if-else语句 67
3.3.4 嵌套的if语句 68
3.3.5 switch语句 71
3.3.6 选择结构程序设计举例 72
3.4 循环结构及实现 77
3.4.1 循环结构程序设计思想 77
3.4.2 while循环 78
3.4.3 do-while循环 79
3.4.4 for循环 80
3.4.5 循环的嵌套 82
3.4.6 转向语句 86
3.4.7 循环结构程序设计举例 89
3.5 结构化程序设计风格 93
3.5.1 程序设计的步骤 93
3.5.2 结构化程序设计方法 94
3.5.3 程序的设计风格 94
习题 95
第4章 函数及变量的存储类别 101
4.1 函数的定义 101
4.1.1 函数定义的一般形式 101
4.1.2 函数参数和返回值 102
4.2 函数的声明和调用 104
4.2.1 函数的声明 104
4.2.2 函数的调用 104
4.2.3 函数调用的数据传递方式 106
4.3 变量的作用域和存储类别 107
4.3.1 变量的作用域、内部变量和外部变量 107
4.3.2 变量的存储类别 109
4.3.3 内部变量的存储类别 110
4.3.4 外部变量的存储类别 112
4.4 外部函数和内部函数 113
4.4.1 外部函数 113
4.4.2 内部函数 114
4.5 函数的嵌套调用和递归调用 115
4.5.1 函数的嵌套调用 115
4.5.2 函数的递归调用 116
4.6 编译预处理 119
4.6.1 宏定义 119
4.6.2 文件包含 122
4.6.3 条件编译 123
习题 124
第5章 数组 130
5.1 一维数组 130
5.1.1 一维数组的定义 130
5.1.2 一维数组的访问 130
5.1.3 一维数组的初始化 131
5.1.4 一维数组应用举例 131
5.2 二维数组 133
5.2.1 二维数组的定义 133
5.2.2 二维数组的访问 134
5.2.3 二维数组的初始化 134
5.2.4 二维数组应用举例 135
5.3 字符数组 136
5.3.1 字符数组的定义和使用 136
5.3.2 字符串和字符数组 137
5.3.3 常用字符串处理函数 138
5.3.4 字符数组应用举例 140
5.4 数组作为函数参数 141
5.4.1 数组元素作为实参 141
5.4.2 数组名作为实参 142
习题 143
第6章 指针 147
6.1 指针类型和指针变量 147
6.1.1 地址和指针的概念 147
6.1.2 指针变量的定义 148
6.1.3 指针变量的使用 149
6.2 指针和函数 152
6.2.1 指针变量作函数参数 152
6.2.2 返回指针值的函数 154
6.2.3 指向函数的指针变量 155
6.3 指针与数组 159
6.3.1 一维数组和指针 159
6.3.2 二维数组和指针 162
6.3.3 字符串和指针 166
6.3.4 数组名作为实参 169
6.3.5 指针数组及带参main()函数 172
习题 177
第7章 其他构造数据类型 183
7.1 结构体 183
7.1.1 结构体类型 183
7.1.2 结构体变量 184
7.1.3 结构体数组 186
7.1.4 向函数传递结构体型数据 189
7.2 链表 189
7.2.1 动态存储分配与回收 189
7.2.2 链表的特点 190
7.2.3 链表的生成和输出 191
7.2.4 链表的插入与删除 195
7.3 共用体 197
7.3.1 共用体类型 197
7.3.2 共用体变量 198
7.4 枚举类型 200
7.4.1 枚举类型 200
7.4.2 枚举类型变量 201
7.5 用户自定义类型 201
7.5.1 用户自定义类型的定义 202
7.5.2 用户自定义类型的应用 204
习题 204
第8章 文件 210
8.1 C文件的基础知识 210
8.1.1 C文件的基本格式 210
8.1.2 缓冲文件和非缓冲文件系统 210
8.1.3 C文件操作的一般过程 211
8.1.4 文件类型与文件类型指针 211
8.2 文件的打开与关闭 212
8.2.1 文件的打开 212
8.2.2 文件的关闭 213
8.3 文件的读/写 213
8.3.1 字符读/写函数 214
8.3.2 数据块读/写函数 215
8.3.3 格式化读/写函数 217
8.3.4 字读/写函数 218
8.3.5 字符串读/写函数 218
8.3.6 读/写其他类型数据 219
8.4 文件的定位 219
8.4.1 fseek()函数 219
8.4.2 rewind()函数 220
8.4.3 ftell()函数 220
8.5 文件的错误检测及处理 220
8.5.1 ferror()函数 220
8.5.2 clearerr()函数 220
8.5.3 feof()函数 221
8.6 应用举例 221
习题 224
参考文献 230