第一章 C语言基础 1
1.1 计算机组成 1
1.2 数据表示和数制 4
1.2.1 数据表示 4
1.2.2 数制 6
1.2.3 数制之间的转换 6
1.2.4 数的补码表示 8
1.2.5 字符编码 9
1.3 算法 10
1.4 编程语言和编译 12
1.4.1 什么是程序 12
1.4.2 什么是编程 13
1.4.3 编程语言的分类 14
1.5 C语言的发展简史与优点 17
1.6 C语言的定义 19
1.7 C语言的使用 19
1.8 C程序举例 24
1.8.1 举例1:Hello World 24
1.8.2 举例2:两个数相加 26
习题 27
第二章 C语言的基本数据类型及运算 29
2.1 标识符与关键字 29
2.1.1 标识符 29
2.1.2 关键字 29
2.2 数据类型 30
2.2.1 基本数据类型 30
2.3.1 数值常量 32
2.3 常量 32
2.2.2 构造数据类型 32
2.2.3 指针类型 32
2.3.2 字符常量 34
2.3.3 字符串常量 34
2.4 变量 35
2.4.1 变量的定义 35
2.4.2 C语言中各种类型的变量 36
2.4.3 变量的初始化 38
2.5 运算符 38
2.5.1 算术运算符和赋值运算符 39
2.5.2 关系运算符和逻辑运算符 40
2.5.3 位运算符 42
2.5.4 条件运算符和逗号运算符 44
2.5.5 其它运算符 45
2.5.6 运算符的优先级和结合方向 46
2.6 表达式 47
2.6.1 C语言的各种表达式 47
2.6.2 表达式中的类型转换 48
2.6.3 空格和圆括号 50
2.7 数据类型、运算符与表达式举例 50
习题 52
第三章 C程序设计初步 54
3.1 结构化程序设计思想 54
3.1.1 程序的质量标准 54
3.1.2 结构化程序设计方法 54
3.1.4 三种基本模块 55
3.1.3 结构化程序的标准 55
3.2 C语句概述 57
3.3 赋值语句 58
3.4 数据输出 59
3.4.1 putchar()函数(字符输出函数) 59
3.4.2 printf()函数(格式输出函数) 59
3.4.3 puts()函数(字符串输出函数) 62
3.5 数据输入 63
3.5.1 getche()函数与getchar()和getch()函数 63
3.5.2 scanf()函数(格式输入函数) 64
3.5.3 gets()函数(字符串输入函数) 67
3.6 程序设计举例 67
习题 69
4.1.1 C语言中的逻辑值 70
4.1.2 关系表达式 70
第四章 分支结构的C程序设计 70
4.1 分支结构中的表达式 70
4.1.3 逻辑表达式 71
4.1.4 其它形式的表达式 72
4.2 if语句 72
4.2.1 if语句的简单形式 72
4.2.2 if~else结构 73
4.2.3 else if结构 78
4.3 switch语句 79
4.4 程序设计举例 82
习题 84
5.1 while循环语句 86
第五章 循环结构的C程序设计 86
5.2 do-while循环语句 89
5.3 for循环语句 91
5.4 循环的嵌套 93
5.5 break语句和continue语句 94
5.5.1 break语句 94
5.5.2 continue语句 95
5.6 goto语句和标号 96
5.7 程序设计举例 97
习题 102
第六章 数组 104
6.1 数组的概念 104
6.2.1 一维数组的定义和引用 105
6.2 一维数组 105
6.2.2 一维数组的初始化 106
6.3 二维数组 108
6.3.1 二维数组的定义和引用 108
6.3.2 二维数组的初始化 109
6.4 字符数组 110
6.4.1 字符数组的定义和初始化 110
6.4.2 字符串 111
6.4.3 字符数组的输入和输出 112
6.4.4 常用字符串处理函数 112
6.5 程序设计举例 114
习题 120
7.1.1 C程序的结构化设计思想 122
第七章 函数及变量存储类型 122
7.1 函数基础与C程序结构 122
7.1.2 函数概述 123
7.2 函数的定义和声明 125
7.2.1 函数的定义 125
7.2.2 函数的声明(函数原型) 128
7.3 函数的调用 129
7.3.1 函数调用的方式和条件 129
7.3.2 形参与实参的数值传递 130
7.3.3 函数的返回值 131
7.4 函数的嵌套与递归 133
7.4.1 函数的嵌套调用 133
7.4.2 函数的递归及条件 134
7.5.1 变量的作用域和生存期 135
7.5 变量的存储类别 135
7.5.2 动态存储和静态存储 137
7.5.3 局部变量 137
7.5.4 局部静态变量的使用 138
7.5.5 全局变量 140
7.5.6 寄存器变量 141
7.6 编译预处理 142
7.6.1 宏定义 142
7.6.2 文件包含处理 144
7.6.3 条件编译 146
7.7 程序设计举例 147
习题 149
8.1.1 指针的概念 151
第八章 指针 151
8.1 指针的概念与定义 151
8.1.2 指针的定义及使用 153
8.2 指针作函数参数 157
8.3 指针与数组 162
8.3.1 指向一维数组的指针 162
8.3.2 数组作函数参数 164
8.3.3 指针和字符串 165
8.3.4 指向多维数组的指针 168
8.3.5 指针数组 172
8.4 指针与函数 174
8.4.1 指向函数的指针 174
8.4.2 返回指针的函数 175
8.5.1 指向指针的指针 176
8.5 复杂指针 176
8.5.2 命令行参数 178
8.5.3 复杂指针的理解 180
8.6 程序设计举例 181
习题 185
第九章 结构体和共用体 187
9.1 结构体 187
9.1.1 结构体类型 187
9.1.2 结构体类型的定义 187
9.1.3 结构体型变量的定义 188
9.1.4 结构体型变量及其成员的引用 190
9.1.5 结构体型变量的初始化 191
9.1.6 应用举例 192
9.2 嵌套结构 193
9.3 结构体型数组 195
9.3.1 结构体型数组的定义 195
9.3.2 结构体型数组的初始化 196
9.4 结构体型指针 197
9.4.1 指向结构体型变量的指针 197
9.4.2 指向结构体型数组的指针 199
9.5 结构体与函数 201
9.5.1 结构体作为函数参数 201
9.5.2 结构体作为函数的返回值 204
9.6.1 动态分配内存的意义 205
9.6.2 开辟和释放内存区的函数 205
9.6 内存的动态分配 205
9.6.3 链表概述 207
9.6.4 建立链表 208
9.6.5 链表的其它操作 214
9.7 共用体(联合) 216
9.7.1 共用体类型 216
9.7.2 共用体型变量的引用方式 216
9.7.3 共用体型变量的特点 217
9.7.4 应用举例 217
9.8 位段 218
9.9 类型定义 219
9.9.1 类型定义的形式 220
9.9.2 类型定义的使用 220
9.9.3 关于类型定义的几点说明 221
9.10 程序设计举例 222
习题 224
第十章 文件 225
10.1 文件概述 225
10.1.1 文件的概念 225
10.1.2 数据流 226
10.1.3 C的文件系统及其与流的关系 227
10.1.4 文件指针 228
10.2 文件的打开与关闭 229
10.2.1 文件的打开(fopen()函数) 229
10.2.2 文件的关闭(fclose()函数) 230
10.3.1 fputc()函数和fgetc()函数 231
10.3 文件的读/写 231
10.3.2 fgets()函数和fputs()函数 233
10.3.3 fprintf()函数和fscanf()函数 233
10.3.4 fread()函数和fwrite()函数 234
10.4 文件的定位 235
10.4.1 rewind()函数 236
10.4.2 fseek()函数 236
10.4.3 ftell()函数 238
10.5 程序设计举例 238
习题 239
附录一 ASCII码表 241
附录二 标准C常用的库函数表 242
附录三 常见错误信息表 249
参考文献 253