第1章 程序设计基础 1
1.1 程序设计的基本概念 1
1.1.1 程序 1
1.1.2 算法与数据结构 1
1.1.3 程序设计语言 4
1.2 程序设计方法 5
1.2.1 程序设计的一般步骤 5
1.2.2 结构化程序设计方法 6
1.3 程序设计风格 6
习题 7
第2章 C语言程序设计初步 9
2.1 C语言简介 9
2.1.1 C语言的特点 9
2.1.2 C程序的结构 9
2.1.3 C语句的概述 11
2.2 常量和变量 13
2.2.1 常量 13
2.2.2 变量 14
2.3 简单的数据类型 15
2.3.1 整数类型 15
2.3.2 实数类型 16
2.3.3 字符类型 17
2.4 运算符及表达式 18
2.4.1 算术运算符与算术表达式 18
2.4.2 赋值运算符与赋值表达式 20
2.4.3 逗号运算符与逗号表达式 22
2.5 类型转换 22
2.5.1 自动类型转换 23
2.5.2 强制类型转换 23
习题 24
第3章 顺序结构程序设计 26
3.1 顺序结构程序设计的思想 26
3.2 实现顺序结构程序设计的基本语句 26
3.2.1 赋值语句 26
3.2.2 标准输入/输出 27
3.3 顺序结构程序设计举例 34
习题 35
第4章 分支结构程序设计 37
4.1 分支结构的设计思想 37
4.2 实现分支结构判断条件的构成 37
4.2.1 关系运算符与关系表达式 37
4.2.2 逻辑运算符与逻辑表达式 38
4.3 实现分支结构程序设计的语句 40
4.3.1 if语句 40
4.3.2 switch语句 44
4.4 分支结构程序设计举例 46
习题 51
第5章 循环结构程序设计 54
5.1 循环结构的设计思想 54
5.2 实现循环结构的语句 54
5.2.1 while语句 54
5.2.2 for语句 56
5.2.3 do~while语句 58
5.4 循环结构程序设计举例 63
5.5 其他语句 67
5.5.1 break(间断语句) 67
5.5.2 continue(接续语句) 69
5.5.3 goto(转向语句) 70
习题 71
第6章 函数 76
6.1 函数的定义 76
6.1.1 概述 76
6.1.2 函数定义的一般形式 77
6.1.3 函数参数和返回值 78
6.2 函数调用 79
6.2.1 函数的声明 79
6.2.2 函数的调用 80
6.2.3 函数调用的数据传递方式 82
6.3 函数的嵌套调用和递归调用 83
6.3.1 函数的嵌套调用 83
6.3.2 函数的递归调用 85
6.4 变量的作用域和存储类别 87
6.4.1 变量的作用域、内部变量和外部变量 87
6.4.2 变量的存储类别 89
6.4.3 内部变量的存储类别 89
6.4.4 外部变量的存储类别 92
6.5 内部函数和外部函数 94
6.5.1 外部函数 94
6.5.2 内部函数 95
6.5.3 举例 95
习题 96
第7章 指针 101
7.1 概述 101
7.1.1 地址 101
7.1.2 指针 101
7.2 指针变量 102
7.2.1 指针变量的定义 102
7.2.2 指针变量的使用 103
7.3 指针和函数 106
7.3.1 指针变量做函数参数 106
7.3.2 函数返回地址值 108
7.4 指向函数的指针变量 109
7.4.1 指向函数的指针变量的定义 109
7.4.2 用指向函数的指针变量调用函数 110
7.5 应用举例 113
习题 114
第8章 数组 121
8.1 一维数组 121
8.1.1 一维数组的定义 121
8.1.2 一维数组元素的引用 121
8.1.3 一维数组的初始化 122
8.1.4 一维数组应用举例 122
8.2 二维数组 126
8.2.1 二维数组的定义 126
8.2.3 二维数组的初始化 127
8.2.4 二维数组应用举例 127
8.3 字符数组 130
8.3.1 字符数组的定义和使用 130
8.3.2 字符串和字符数组 131
8.3.3 常用字符串处理函数 132
8.3.4 举例 134
8.4 一维数组和指针 135
8.4.1 一维数组名及数组元素的地址 135
8.4.2 指向一维数组的指针变量 136
8.4.3 举例 137
8.5 二维数组和指针 138
8.5.1 二维数组名及数组元素的地址 138
8.5.2 指向二维数组元素的指针变量 139
8.5.3 指向二维数组的行指针变量 141
8.6 字符串和指针 143
8.6.1 指向字符数组的指针变量 143
8.6.2 指向字符串常量的指针变量 144
8.7 向函数传递数组 145
8.7.1 值传递方式与地址传递方式 145
8.7.2 数组元素做实参 145
8.7.3 数组名做实参 147
8.8 指针数组及带参main函数 149
8.8.1 指针数组的定义和使用 149
8.8.2 main函数的参数 151
习题 153
第9章 结构体、共用体和枚举类型 158
9.1 结构体类型与结构体变量 158
9.1.1 结构体类型的定义 158
9.1.2 结构体变量的定义和初始化 159
9.1.3 结构体变量的引用 160
9.1.4 举例 161
9.2 结构体数组 162
9.2.1 结构体数组的定义、初始化 162
9.2.2 结构体数组的引用 163
9.2.3 举例 164
9.3 向函数传递结构体型数据 165
9.3.1 向函数传递结构体变量的成员 165
9.3.2 向函数传递结构体变量 165
9.3.3 向函数传递结构体变量的地址 165
9.3.4 向函数传递结构体数组 167
9.4 链表 168
9.4.1 链表的特点 168
9.4.2 创建链表 170
9.4.3 在链表中插入节点 173
9.4.4 在链表中删除节点 174
9.4.5 举例 175
9.5 共用体 176
9.5.1 共用体类型的定义 176
9.5.2 共用体变量的定义 177
9.5.3 共用体变量的引用 178
9.5.4 举例 178
9.6 枚举类型 179
9.6.1 枚举类型的定义 179
9.6.2 枚举类型变量的定义和使用 180
9.6.3 举例 181
9.7 用户自定义类型 181
9.7.1 用户自定义类型的含义和格式 181
9.7.2 用typedef声明基本类型 181
9.7.3 用typedef声明构造类型 182
9.7.4 用户自定义类型的应用 183
习题 184
第10章 编译预处理 189
10.1 宏定义 189
10.1.1 不带参数的宏定义 189
10.1.2 带参数的宏定义 190
10.1.3 终止宏定义 191
10.2 文件包含 192
10.3 条件编译 194
习题 195
第11章 位运算 198
11.1 位运算和位运算符 198
11.1.1 “按位取反”运算符~ 198
11.1.2 “按位与”运算符& 199
11.1.3 “按位或”运算符| 200
11.1.4 “按位异或”运算符∧ 201
11.1.5 左移运算符<< 202
11.1.6 右移运算符>> 203
11.1.7 位复合赋值运算符 203
11.2 位段 203
11.3 应用举例 207
习题 210
第12章 文件 213
12.1 C文件的基础知识 213
12.1.1 C文件的基本格式 213
12.1.2 缓冲文件和非缓冲文件系统 213
12.1.3 C文件操作的一般方法 214
12.2 文件类型指针 214
12.2.1 文件类型 214
12.2.2 文件类型指针 215
12.3 文件的打开与关闭 215
12.3.1 文件的打开(fopen)函数 215
12.3.2 文件的关闭(fclose)函数 216
12.4 文件的读写 217
12.4.1 字符读写函数 217
12.4.2 数据块读写函数 218
12.4.3 格式化读写函数 221
12.4.4 字读写函数 221
12.4.5 字符串读写函数 222
12.4.6 读写其他类型数据 223
12.5 文件的定位 223
12.5.1 fseek 函数 223
12.5.2 rewind 函数 224
12.5.3 ftell函数 224
12.6 检测函数 224
12.6.1 ferror 函数 224
12.6.2 clearerr函数 225
12.6.3 feof函数 225
12.7 应用举例 225
习题 228
第13章 图形处理 234
13.1 基本概念 234
13.1.1 坐标系 234
13.1.2 图形模式 235
13.2 图形函数 236
13.2.2 画图和填充函数 237
13.2.3 颜色控制函数 239
13.2.4 屏幕和图形窗口管理函数 240
13.2.5 图形方式下的文本输出函数 240
13.2.6 图形存取函数 241
13.2.7 错误处理 242
13.3 应用举例 242
附录A ASCII码表 246
附录B C语言中的关键字 247
附录C 运算符和结合性 248
附录D C库函数 250
附录E 简单的上机操作和程序的调试 256
参考文献 263