第1章 C语言概述 1
1.1 C语言的出现及特点 1
1.1.1 计算机程序设计语言介绍 1
1.1.2 C语言的特点 2
1.2 简单C程序示例 2
1.3 C语言程序的编译和运行 6
1.3.1 程序编写与运行步骤 6
1.3.2 Visual C++6.0的上机过程 6
1.4 算法 8
1.4.1 算法的概念 8
1.4.2 流程图及N-S流程图 9
习题一 10
第2章 数据类型、运算符和表达式 11
2.1 概述 11
2.2 标识符、常量和变量 12
2.2.1 标识符 12
2.2.2 常量 13
2.2.3 变量 14
2.3 整型数据 15
2.3.1 整型数据分类 15
2.3.2 整型数据在内存中的存储形式 16
2.3.3 整型常量 17
2.3.4 整型变量 18
2.4 实型数据 19
2.4.1 实型数据的分类及在内存中存储形式 19
2.4.2 实型常量与实型变量 21
2.5 字符型数据 22
2.5.1 字符型数据在内存中存储形式 22
2.5.2 字符型常量的表示与字符型变量的定义方法 23
2.6 算术运算符和算术表达式 25
2.6.1 C语言中运算符简介 25
2.6.2 算术运算符和算术表达式 26
2.6.3 运算符的优先级、结合性 27
2.7 类型转换 28
2.7.1 隐式(自动)类型转换 28
2.7.2 强制类型转换 29
2.8 赋值运算符和赋值表达式 30
2.8.1 赋值运算符和赋值表达式 30
2.8.2 复合赋值运算符 31
2.8.3 变量赋初始值 32
2.8.4 赋值运算中的类型转换 33
2.9 自加、自减运算符和逗号运算符 35
2.9.1 自加运算符(++)和自减运算符(--) 35
2.9.2 逗号运算符和逗号表达式 36
2.10 关系、逻辑运算符及表达式 37
2.10.1 关系运算符和关系表达式 38
2.10.2 逻辑运算符和逻辑表达式 40
2.11 位运算 41
2.11.1 位运算符和位运算 41
2.11.2 位运算符的运算功能 42
习题二 45
第3章 语句和程序控制 48
3.1 程序的三种基本结构及流程图表示 48
3.2 C语言语句 50
3.3 数据的输入和输出 51
3.3.1 putchar函数 51
3.3.2 getchar函数 52
3.3.3 printf函数 52
3.3.4 scanf函数 56
3.4 if语句 58
3.4.1 if语句的两种基本形式 58
3.4.2 if语句的嵌套 61
3.4.3 条件运算符与条件表达式 64
3.5 switch语句 65
3.6 for语句 67
3.7 while语句 73
3.8 do-while语句 74
3.9 break语句及continue语句 77
3.9.1 break语句 77
3.9.2 continue语句 78
3.10 goto语句 80
3.11 程序举例 81
习题三 92
第4章 函数与程序结构 96
4.1 函数及其定义 97
4.2 函数的参数及函数的值 98
4.3 函数的调用 100
4.4 递归 103
4.5 C语言程序的一般结构 104
4.6 变量的作用域与存储类型 104
4.6.1 变量的作用域 104
4.6.2 变量的存储类型 106
4.7 C语言编译预处理命令 108
4.7.1 宏定义 108
4.7.2 文件包含 110
4.7.3 条件编译 112
习题四 113
第5章 数组 116
5.1 数组的概念 116
5.2 一维数组 117
5.2.1 一维数组的定义 117
5.2.2 一维数组元素的引用 118
5.2.3 一维数组的初始化 119
5.2.4 一维数组的程序设计应用举例 120
5.3 二维数组 126
5.3.1 二维数组的定义 126
5.3.2 二维数组元素的引用 127
5.3.3 二维数组的初始化 127
5.3.4 二维数组的程序设计应用举例 129
5.4 数组在函数调用中的应用 131
5.4.1 数组元素作为函数实参 131
5.4.2 一维数组名作为函数参数 131
5.4.3 二维数组名作为函数参数 135
习题五 137
第6章 指针 141
6.1 指针与地址 141
6.1.1 计算机内存的基本组织 141
6.1.2 内存中的存储单元 142
6.1.3 存储单元与变量 143
6.1.4 指针的概念 144
6.1.5 变量指针的使用 146
6.1.6 指针的类型及表示 147
6.2 指针变量定义和使用 148
6.2.1 指针变量的定义及初始化 148
6.2.2 指针变量的引用 151
6.2.3 指针变量的运算 153
6.2.4 动态存储分配 157
6.2.5 指针作为函数参数 159
6.3 数组与指针 163
6.3.1 用指针访问一维数组元素 163
6.3.2 一维数组名与指针 165
6.3.3 多维数组和指针 168
6.3.4 指向数组的行指针变量 174
6.3.5 用指向数组的指针作为函数的参数 177
6.4 指针数组 183
6.4.1 指针数组的定义及使用 184
6.4.2 用指针数组访问二维数组元素 188
6.4.3 main函数的命令行参数 189
6.5 指向函数的指针 193
6.5.1 用指向函数的指针变量调用函数 193
6.5.2 用指向函数的指针变量作为函数的参数 195
6.6 返回值类型为指针的函数 197
6.7 指向指针的指针 199
6.8 有关指针的应用举例 203
习题六 209
第7章 字符串 214
7.1 字符串和字符数组 214
7.2 常用的字符串处理函数 215
7.2.1 字符串输入输出函数 215
7.2.2 字符串其它相关函数 217
7.3 字符串与指针 221
7.3.1 指向字符串的指针 221
7.3.2 字符指针作函数参数 224
7.3.3 返回值为字符指针的函数 228
7.4 存储字符串的数组 229
7.5 有关字符串的程序举例 232
习题七 235
第8章 结构体、共用体和枚举类型 237
8.1 概述 237
8.2 用typedef说明新类型 237
8.3 结构体类型 238
8.3.1 结构体类型的说明 238
8.3.2 结构体变量的定义 239
8.3.3 结构体变量的初始化 241
8.3.4 结构体与指针 241
8.3.5 引用结构体变量中的数据 242
8.3.6 结构体数组 243
8.3.7 结构体与函数 244
8.3.8 自引用的结构体与链表 249
8.4 共用体 259
8.4.1 共用体类型的说明和变量定义 259
8.4.2 共用体变量的引用 261
8.5 枚举类型 262
8.6 应用举例 264
习题八 269
第9章 文件 274
9.1 文件的概念 274
9.2 文件指针 274
9.3 文件的打开和关闭 275
9.4 文件的读写 277
9.4.1 文件的字符输入和输出 277
9.4.2 文件的字符串输入和输出 279
9.4.3 文件的格式化输入和输出 280
9.4.4 块的读写 282
9.5 文件的定位 285
9.5.1 rewind函数 285
9.5.2 fseek函数和随机读写 286
9.5.3 ftell函数 287
9.6 文件的出错处理 288
9.7 文件的其它相关函数 288
习题九 291
附录 292
附录一 常见字符与ASCII代码对照表 292
附录二 C运算符的优先级和结合性 293
附录三 C常用的库函数 294
参考文献 298