第一章 C语言的发展、特点与程序结构 1
1.1 C语言的发展与特点 1
1.1.1 C语言的发展 1
1.1.2 C语言的特点 2
1.2 程序设计的基本方法 3
1.2.1 计算机程序 3
1.2.2 面向过程的程序设计 4
1.2.3 面向对象的程序设计 4
1.3 算法及其表示 5
1.3.1 算法的概念 5
1.3.2 算法的表示 6
1.4 C语言程序的基本结构 9
1.4.1 简单的C语言程序介绍 9
1.4.2 C语言程序基本结构 11
1.5 应用程序的开发过程 12
第二章 数据类型、运算符和表达式 15
2.1 C语言的字符集和保留字 15
2.1.1 C语言的字符集 15
2.1.2 C语言的保留字 16
2.1.3 C语言的词法约定 16
2.2 数据类型 18
2.2.1 C语言的数据类型 18
2.2.2 C语言的基本数据类型 19
2.2.3 不同数据类型间的转换与运算 20
2.3 常量、变量和标准函数 22
2.3.1 常量 22
2.3.2 变量 27
2.3.3 标准函数 32
2.4 基本运算符及其表达式 33
2.4.1 算术运算符与算术表达式 34
2.4.2 关系运算符与关系表达式 38
2.4.3 逻辑运算符与逻辑表达式 40
2.4.4 条件运算符与条件表达式 42
2.4.5 赋值运算符与赋值表达式 43
2.4.6 逗号运算符与逗号表达式 46
第三章 基本语句与顺序结构程序设计 47
3.1 C语言程序的基本语句 47
3.1.1 表达式语句 47
3.1.2 函数调用语句 48
3.1.3 控制语句 48
3.1.4 复合语句 49
3.1.5 空语句 49
3.2 赋值语句 50
3.3 数据的输入输出 51
3.3.1 格式输入输出函数(printf函数和scanf函数) 51
3.3.2 字符输入输出函数(putchar函数和getchar函数) 61
第四章 选择结构程序设计 63
4.1 用if语句实现选择结构 63
4.1.1 if语句的三种形式 63
4.1.2 if语句的嵌套 70
4.2 用switch语句实现多分支选择结构 75
4.3 用条件表达式实现选择结构 79
第五章 循环结构程序设计 81
5.1 用while语句实现循环结构 81
5.2 用do-while语句实现循环结构 85
5.3 用for语句实现循环结构 88
5.4 continue语句和break语句 92
5.4.1 continue语句 92
5.4.2 break语句 93
5.5 循环的嵌套 95
5.5.1 循环的嵌套 95
5.5.2 程序举例 98
5.5.3 循环在数值计算中的应用 103
5.6 goto语句和语句标号的使用 106
第六章 数组 108
6.1 一维数组 108
6.1.1 一维数组的定义、初始化和引用 108
6.1.2 一维数组的输入输出 111
6.1.3 一维数组应用实例 112
6.2 二维数组 115
6.2.1 二维数组的定义、初始化和引用 115
6.2.2 二维数组的输入输出 117
6.2.3 二维数组应用实例 118
6.3 字符数组 120
6.3.1 字符数组的定义、初始化和引用 120
6.3.2 字符数组的输入输出 122
6.3.3 字符串处理函数 123
6.3.4 字符数组应用实例 126
第七章 函数 129
7.1 函数的概述 129
7.1.1 C程序的模块化结构 130
7.1.2 函数的分类与定义 131
7.1.3 函数调用的一般形式 132
7.1.4 函数的参数 134
7.1.5 函数的返回值 136
7.1.6 对被调用函数的说明 138
7.1.7 数组作为函数参数 138
7.2 函数的嵌套调用和递归调用 140
7.2.1 函数的嵌套调用 140
7.2.2 函数的递归调用 142
7.3 变量的作用域和生存期 145
7.3.1 变量的作用域 145
7.3.2 变量的存储类别 147
7.4 内部函数和外部函数 151
7.4.1 内部函数 151
7.4.2 外部函数 152
7.5 综合应用举例(一) 152
第八章 指针 155
8.1 指针和指针变量的概念 155
8.1.1 地址和指针 155
8.1.2 指针变量 156
8.2 变量的指针和指向变量的指针变量 156
8.2.1 指针变量的定义 157
8.2.2 指针变量的引用 157
8.2.3 指针变量的初始化 158
8.2.4 指针变量的运算 159
8.2.5 指针变量作为函数参数 161
8.3 数组的指针和指向数组的指针变量 162
8.3.1 一维数组的指针和指向一维数组元素的指针变量 162
8.3.2 二维数组的指针和指向二维数组的指针变量 165
8.3.3 数组名作为函数参数 169
8.4 字符串的指针和指向字符串的指针变量 171
8.4.1 字符串指针变量的定义与引用 171
8.4.2 字符串指针变量与字符数组 172
8.4.3 字符串指针变量作为函数参数 173
8.5 指针数组和指向指针的指针 174
8.5.1 指针数组 174
8.5.2 指向指针的指针 176
8.6 指向函数的指针变量和返回指针的函数 178
8.6.1 函数的指针 178
8.6.2 指向函数的指针变量的定义与引用 178
8.6.3 指向函数的指针变量作为函数参数 180
8.6.4 返回指针的函数 183
第九章 结构体和共用体 185
9.1 结构体 185
9.1.1 结构体类型的定义 185
9.1.2 结构体类型变量的定义 186
9.1.3 结构体类型变量的初始化和引用 189
9.1.4 结构体数组 191
9.1.5 指向结构体类型变量的指针变量 194
9.2 链表 196
9.2.1 链表的概念 196
9.2.2 用指针和结构体实现链表 196
9.2.3 对单向链表的操作 198
9.3 共用体 202
9.3.1 共用体类型的定义 202
9.3.2 共用体类型变量的定义 203
9.3.3 共用体类型变量的引用 205
9.4 自定义数据类型 208
9.5 综合应用举例(二) 210
第十章 编译预处理 216
10.1 编译预处理的概念 216
10.2 宏定义 216
10.2.1 不带参数的宏定义 216
10.2.2 带参数的宏定义 219
10.3 文件包含 220
10.4 条件编译 221
第十一章 位运算 223
11.1 位运算的概念 223
11.2 位运算符的含义及其使用 224
11.2.1 按位“与”运算(&) 224
11.2.2 按位“或”运算(|) 224
11.2.3 按位“非”运算(~) 225
11.2.4 按位“异或”运算(^) 225
11.2.5 “左移”运算(<<) 225
11.2.6 “右移”运算(>>) 226
11.2.7 长度不同的两个数进行位运算的运算规则 227
11.2.8 位复合赋值运算符 227
11.3 位段 227
第十二章 文件 231
12.1 文件与文件类型指针 231
12.1.1 文件 231
12.1.2 文件数据的存储形式 232
12.1.3 文件的处理方法 232
12.2 文件的打开与关闭 233
12.2.1 文件的打开 233
12.2.2 文件的关闭 235
12.3 文件的存取 236
12.3.1 字符读写(函数fgetc()和函数fputc()) 236
12.3.2 字符串读写(函数fgets()和函数fputs()) 238
12.3.3 格式读写(函数fscanf()和函数fprintf()) 240
12.3.4 数据块读写(函数fread()和函数fwrite()) 240
12.4 文件的定位 241
12.4.1 函数rewind() 242
12.4.2 函数fseek() 242
12.4.3 ftell函数 243
12.5 综合应用举例(三) 243
附录Ⅰ ASCII码表 249
附录Ⅱ C语言中的保留字 251
附录Ⅲ 运算符、优先级和结合性 253
附录Ⅳ C语言常用库函数 255
参考文献 260