第1章 概述 1
1.1 计算机程序和计算机语言 1
1.2 程序设计的一般步骤 3
1.3 C语言的发展历程 4
1.4 初识C语言 5
1.4.1 C语言的特点 5
1.4.2 C和C++ 7
1.4.3 C语言的字符集 7
1.4.4 C语言的词汇 8
1.5 最简单的C语言程序 9
1.5.1 C程序举例 9
1.5.2 C程序的结构特点 13
1.5.3 养成良好的程序设计风格 14
1.6 运行C程序的步骤与方法 14
1.7 本章小结 16
习题1 16
第2章 算法与程序 17
2.1 算法基础知识 17
2.2 算法的特征 18
2.3 几种常用的算法 19
2.4 简单算法示例 21
2.5 如何评价一个算法 28
2.6 算法的描述工具 29
2.6.1 自然语言 29
2.6.2 程序流程图 30
2.6.3 N-S结构化流程图 38
2.6.4 过程设计语言 40
2.6.5 PAD图 43
2.6.6 判定表和判定树 44
2.7 结构化程序设计方法 45
2.8 本章小结 47
习题2 48
第3章 基本数据类型与表达式 49
3.1 数据类型分类 49
3.2 整型数据 49
3.3 浮点型数据 50
3.4 字符型数据 51
3.5 常量与变量的定义 52
3.5.1 常量 52
3.5.2 变量 52
3.6 运算符和表达式 54
3.6.1 C语言运算符简介 54
3.6.2 算术运算符和算术表达式 54
3.6.3 条件运算符和条件运算表达式 55
3.6.4 逗号运算符和逗号表达式 56
3.7 本章小结 56
习题3 56
第4章 顺序结构程序设计 59
4.1 顺序程序设计举例 59
4.2 C语句 61
4.2.1 C语句概述 61
4.2.2 最基本的语句——赋值语句 62
4.3 数据的输入输出 64
4.3.1 格式输出函数printf() 65
4.3.2 格式输入函数scanf() 70
4.3.3 字符输出函数putchar() 74
4.3.4 字符输入函数getchar() 75
4.4 本章小结 76
习题4 76
第5章 选择结构程序设计 77
5.1 为什么需要选择结构 77
5.2 关系运算符和关系表达式 78
5.2.1 关系运算符 78
5.2.2 关系表达式 78
5.3 逻辑运算符和逻辑表达式 79
5.3.1 逻辑运算符 79
5.3.2 逻辑表达式 80
5.4 用if语句实现选择结构 80
5.4.1 单分支if语句 80
5.4.2 双分支if语句 81
5.4.3 多分支if语句 82
5.5 用switch语句实现选择结构 84
5.6 选择结构的嵌套 85
5.7 选择结构程序设计综合举例 86
5.8 本章小结 88
习题5 88
第6章 循环结构程序设计 90
6.1 为什么需要循环结构 90
6.2 用while语句实现循环结构 90
6.3 用do…while语句实现循环结构 91
6.4 用for语句实现循环结构 92
6.5 循环的嵌套 93
6.6 break语句和continue语句 95
6.6.1 用break语句提前退出循环 95
6.6.2 用continue语句提前结束本次循环 96
6.7 循环结构程序设计综合举例 97
6.8 本章小结 99
习题6 99
第7章 数组 101
7.1 定义和引用一维数组 101
7.1.1 定义一维数组 101
7.1.2 引用一维数组元素 102
7.1.3 初始化一维数组 103
7.1.4 一维数组程序举例 104
7.2 定义和引用二维数组 107
7.2.1 定义二维数组 107
7.2.2 引用二维数组元素 108
7.2.3 初始化二维数组 108
7.2.4 二维数组程序举例 109
7.3 字符数组 111
7.3.1 定义字符数组 111
7.3.2 初始化字符数组 111
7.3.3 引用字符数组中元素 112
7.3.4 字符串和字符串结束标志 113
7.3.5 字符数组的输入输出 115
7.3.6 使用字符串处理函数 117
7.3.7 字符数组应用举例 120
7.4 本章小结 123
习题7 123
第8章 函数 125
8.1 函数概述 125
8.2 函数的定义 127
8.2.1 无参函数的定义形式 128
8.2.2 有参函数的定义形式 128
8.2.3 定义空函数 129
8.3 函数调用 130
8.3.1 函数的参数 130
8.3.2 对调用函数的声明 132
8.3.3 函数的返回值 135
8.4 嵌套调用和递归调用 137
8.4.1 嵌套调用 137
8.4.2 函数的递归调用 139
8.5 数组作为函数参数 143
8.5.1 数组元素作函数实参 143
8.5.2 数组名作函数参数 144
8.5.3 多维数组名作函数参数 147
8.6 变量的作用域 149
8.6.1 局部变量 149
8.6.2 全局变量 150
8.7 变量的存储类型 154
8.7.1 动态存储方式 155
8.7.2 静态存储方式 156
8.7.3 存储类别小结 162
8.8 内部函数和外部函数 165
8.8.1 内部函数 166
8.8.2 外部函数 166
8.9 本章小结 168
习题8 169
第9章 指针 172
9.1 指针的概念 172
9.2 指针变量 172
9.2.1 指针变量的定义 172
9.2.2 指针变量的初始化 173
9.2.3 指针变量的引用 174
9.2.4 指针变量的运算 176
9.3 指针与数组 179
9.3.1 数组指针 179
9.3.2 指针数组 183
9.3.3 指向多维数组的指针 185
9.4 指针与字符串 187
9.4.1 字符串的引用 187
9.4.2 字符型指针 188
9.4.3 字符指针变量与字符数组的区别 190
9.5 指针与函数 193
9.5.1 函数指针 193
9.5.2 指针函数 201
9.5.3 带参的main函数 203
9.6 多重指针 204
9.7 动态内存分配与指向它的指针变量 207
9.7.1 内存的分配 207
9.7.2 动态创建数组 210
9.8 本章小结 211
习题9 212
第10章 结构体、共用体和枚举类型 214
10.1 结构体 214
10.1.1 结构体的定义 214
10.1.2 结构体变量的定义 216
10.1.3 结构体变量的使用 219
10.1.4 结构体与数组 222
10.1.5 结构体与指针 225
10.1.6 结构体综合举例 232
10.2 链表 237
10.2.1 链表基本结构与定义 237
10.2.2 链表基本操作 238
10.2.3 建立动态链表 239
10.2.4 输出链表 242
10.3 共用体 244
10.3.1 共用体的定义 244
10.3.2 共用体变量的定义和使用 245
10.3.3 共用体数据的特点 247
10.3.4 共用体举例 249
10.4 枚举类型 251
10.4.1 枚举类型的定义 252
10.4.2 枚举类型变量的定义和使用 252
10.4.3 枚举类型数据的特点 253
10.4.4 枚举类型举例 254
10.5 用typedef重定义数据类型名 256
10.5.1 typedef概述 256
10.5.2 typedef的典型用法 257
10.5.3 typedef与#define的区别 258
10.6 本章小结 259
习题10 260
第11章 位运算 263
11.1 位运算概述 263
11.2 位运算符 263
11.2.1 取反运算 264
11.2.2 左移运算 264
11.2.3 右移运算 265
11.2.4 按位与运算 266
11.2.5 按位异或运算 267
11.2.6 按位或运算 269
11.2.7 不同长度的数据进行位运算 269
11.2.8 位运算举例 270
11.3 位段 271
11.4 本章小结 273
习题11 273
第12章 文件 275
12.1 文件概述 275
12.2 文件类型指针 276
12.3 文件的打开和关闭 277
12.3.1 打开文件函数fopen() 277
12.3.2 关闭文件函数fclose() 279
12.4 文件的读写 280
12.4.1 字符读写函数fputc()和fgetc() 280
12.4.2 字符串读写函数fputs()和fgets() 283
12.4.3 数据块读写函数fwrite()和fread() 285
12.4.4 格式化读写函数fprintf()和fscanf() 288
12.5 文件的定位 291
12.5.1 文件位置指针定位函数fseek() 291
12.5.2 文件位置指针复位函数rewind() 293
12.5.3 文件位置指针查询函数ftell() 295
12.6 文件检测函数 296
12.6.1 文件结束检测函数feof() 296
12.6.2 文件出错检测函数ferror() 296
12.6.3 文件出错标志和文件结束标志置0函数clearerr() 296
12.6.4 应用举例 297
12.7 本章小结 298
习题12 299
附录 303
附录1 常用字符与ASCII码对照表 303
附录2 C语言中的关键字 304
附录3 运算符和结合性 304
附录4 C语言常用语法 305
附录5 ANSI C常用库函数 307
参考文献 312