第1章 概述 1
1.1 计算机程序与语言简介 1
1.1.1 计算机程序 1
1.1.2 计算机语言及其处理程序 1
1.1.3 程序开发的一般步骤 3
1.2 C语言简介 4
1.2.1 C语言的起源 4
1.2.2 C语言的标准 5
1.2.3 C语言的主要特点 6
1.3 C语言程序的基本结构 7
1.3.1 几个简单的C语言程序 7
1.3.2 C语言程序的基本结构 10
1.3.3 C语言的字符集、关键字和标识符 10
1.4 C语言程序的编程环境 12
本章小结 14
思考题 14
第2章 基本数据类型、运算符和表达式 15
2.1 引例 15
2.2 C语言的数据类型 16
2.3 常量和变量 16
2.4 C语言程序中的数据 18
2.4.1 整型数据 18
2.4.2 字符型数据 22
2.4.3 实型数据 25
2.4.4 符号常量 27
2.5 运算符和表达式 28
2.5.1 算术运算符和算术表达式 29
2.5.2 赋值运算符和赋值表达式 31
2.5.3 逗号运算符和逗号表达式 33
2.6 不同类型数据间的混合运算 34
2.7 标准库函数简介 36
本章小结 38
思考题 38
第3章 C语言程序设计初步 39
3.1 结构化程序的概念 39
3.2 算法简介 40
3.2.1 算法的基本概念 40
3.2.2 算法的基本结构 40
3.2.3 算法的表示方法 41
3.3 C语言程序的基本语句 44
3.3.1 声明语句 44
3.3.2 表达式语句 44
3.3.3 函数调用语句 44
3.3.4 空语句 45
3.3.5 复合语句 45
3.3.6 流程控制语句 46
3.4 数据输入输出的概念与C语言实现 47
3.5 几种输入输出数据的方法 47
3.5.1 用函数putchar输出单个字符数据 48
3.5.2 用函数getchar输入单个字符数据 49
3.5.3 用函数printf按指定格式输出数据 50
3.5.4 用函数scanf按指定格式输入数据 58
3.6 程序设计案例:幼儿知识小测验 64
本章小结 65
思考题 65
第4章 选择结构程序设计 67
4.1 引例 67
4.2 表示条件判断的基本方法 67
4.2.1 关系运算符和关系表达式 67
4.2.2 逻辑运算符和逻辑表达式 69
4.3 用if语句实现选择结构 71
4.3.1 if语句的基本形式 71
4.3.2 if语句的嵌套 76
4.3.3 条件运算符和条件表达式 79
4.4 用switch语句实现选择结构 81
4.4.1 switch语句基本语法 81
4.4.2 使用switch语句的要点 83
4.5 程序设计案例:计算器 85
本章小结 87
思考题 87
第5章 循环结构程序设计 88
5.1 引例 88
5.2 用while语句实现循环结构 89
5.2.1 while语句的基本语法 89
5.2.2 while语句使用要点 91
5.3 用do-while语句实现循环结构 92
5.3.1 do-while语句的基本语法 92
5.3.2 do-while语句使用要点 93
5.4 用for语句实现循环结构 95
5.4.1 for语句的基本语法 95
5.4.2 for语句使用要点 96
5.5 嵌套循环结构 99
5.6 在循环结构中使用13reak语句和continue语句 101
5.6.1 break语句 101
5.6.2 continue语句 104
5.7 不受推崇的goto语句 105
5.8 程序设计案例:猜数字游戏 107
本章小结 110
思考题 110
第6章 数组 112
6.1 引例 112
6.2 一维数组 114
6.2.1 一维数组的定义和存储 114
6.2.2 一维数组元素的引用 116
6.2.3 一维数组的初始化 117
6.2.4 一维数组元素的输入输出 118
6.2.5 一维数组应用举例 120
6.3 二维数组 126
6.3.1 二维数组的定义和存储 126
6.3.2 二维数组元素的引用 126
6.3.3 二维数组的初始化 127
6.3.4 二维数组的输入输出 128
6.3.5 二维数组应用举例 129
6.4 程序设计案例:折半查找 133
本章小结 135
思考题 136
第7章 函数 137
7.1 程序的模块化 137
7.2 C语言的函数 138
7.3 函数的定义 140
7.4 函数的调用 144
7.4.1 函数调用的一般形式 144
7.4.2 函数的参数 146
7.4.3 函数的返回值 147
7.4.4 函数的声明 148
7.4.5 数组作为函数参数 149
7.4.6 函数的嵌套调用 151
7.4.7 函数的递归调用 152
7.5 变量的作用域 156
7.5.1 局部变量 156
7.5.2 全局变量 156
7.5.3 作用域存在重叠区的同名变量 159
7.6 变量的存储类别 160
7.6.1 自动变量 161
7.6.2 寄存器变量 161
7.6.3 外部变量 162
7.6.4 静态变量 163
7.7 较大型C语言程序的组织 164
7.7.1 头文件 164
7.7.2 内部函数和外部函数 165
7.7.3 把程序划分成多个文件 165
7.7.4 构建多文件的程序 168
7.8 程序设计案例:井字棋游戏 168
本章小结 173
思考题 174
第8章 指针 175
8.1 指针和指针变量 175
8.1.1 引例 175
8.1.2 指针与地址 176
8.1.3 指针变量 177
8.2 指针变量的使用 178
8.2.1 指针变量的定义 178
8.2.2 指针变量的引用 179
8.2.3 指针变量的初始化 180
8.2.4 指针变量作为函数参数 181
8.3 指针与数组 182
8.3.1 指针变量的运算 182
8.3.2 数组的指针和指向数组的指针变量 185
8.3.3 数组作为函数参数 193
8.4 指针数组和指向指针的指针 196
8.4.1 指针数组 196
8.4.2 指向指针的指针 197
8.5 指针与函数 198
8.5.1 函数指针与指向函数的指针变量 198
8.5.2 函数指针作为函数参数 200
8.5.3 返回指针的函数 203
8.6 指针与动态内存管理 205
8.6.1 动态内存的分配与管理 205
8.6.2 void指针类型 206
8.7 程序设计案例:学生成绩查询系统 206
本章小结 210
思考题 210
第9章 字符串 212
9.1 字符串的基本概念 212
9.2 用字符数组存储和处理字符串 213
9.2.1 字符数组的定义 213
9.2.2 字符数组的引用 213
9.2.3 字符数组的初始化 214
9.2.4 字符数组的输入输出 216
9.3 指向字符串的指针变量 218
9.3.1 字符串指针变量的定义与初始化 218
9.3.2 字符串指针变量与字符数组 219
9.3.3 字符串指针变量作为函数参数 221
9.4 字符串处理函数 222
9.4.1 gets函数 222
9.4.2 puts函数 223
9.4.3 strlen函数 224
9.4.4 strcat函数 225
9.4.5 strcpy函数 225
9.4.6 strcmp函数 226
9.4.7 strlwr函数 227
9.4.8 strupr函数 227
9.5 程序设计案例:字符串排序 227
本章小结 230
思考题 230
第10章 结构体、共用体和枚举 232
10.1 引例 232
10.2 结构体 232
10.2.1 结构体类型的定义 232
10.2.2 结构体类型变量的定义 234
10.2.3 结构体类型变量的存储结构 235
10.2.4 结构体类型变量的引用 238
10.2.5 结构体数组 239
10.2.6 结构体指针 242
10.2.7 结构体与函数 242
10.3 typedef的用法 247
10.4 用结构体和指针实现链表 249
10.4.1 链表的概念 249
10.4.2 对单向链表的操作 250
10.5 共用体 254
10.5.1 共用体类型的定义 254
10.5.2 共用体类型变量的定义 254
10.5.3 共用体类型变量的存储结构 255
10.5.4 共用体类型变量的引用 255
10.6 枚举 259
10.6.1 枚举类型的定义 259
10.6.2 枚举类型变量的定义 259
10.6.3 枚举类型变量的引用 260
10.7 程序设计案例 262
10.7.1 图书信息管理系统 262
10.7.2 学生信息管理系统 271
10.7.3 贪食蛇游戏 276
本章小结 286
思考题 286
第11章 文件处理 287
11.1 文件的概念及其分类 287
11.1.1 文件的概念 287
11.1.2 文件的分类 287
11.2 C语言的文件处理方法 288
11.2.1 流 288
11.2.2 缓冲区 288
11.2.3 文件指针 288
11.3 文件的打开与关闭 289
11.3.1 文件的打开 289
11.3.2 文件的关闭 291
11.4 文件的顺序读写 292
11.4.1 字符读写 292
11.4.2 字符串读写 295
11.4.3 格式读写 297
11.4.4 数据块读写 300
11.5 文件的随机读写 304
11.5.1 函数rewind 305
11.5.2 函数fseek 305
11.5.3 ftell函数 307
11.6 程序设计案例 308
本章小结 321
思考题 321
第12章 位运算和位段 322
12.1 位运算的概念 322
12.2 位运算符的含义及其使用 323
12.2.1 按位“与”运算(&) 323
12.2.2 按位“或”运算(|) 323
12.2.3 按位“非”运算(~) 323
12.2.4 按位“异或”运算(^) 323
12.2.5 “左移”运算(<<) 324
12.2.6 “右移”运算(>>) 325
12.2.7 长度不同的两个数进行位运算的规则 326
12.2.8 位复合赋值运算符 326
12.3 位段 326
12.3.1 位段的定义 327
12.3.2 位段的使用 328
本章小结 330
思考题 330
第13章 编译预处理 331
13.1 编译预处理的概念 331
13.2 宏定义 331
13.2.1 不带参数的宏定义 331
13.2.2 带参数的宏定义 334
13.3 文件包含 336
13.4 条件编译 337
本章小结 339
思考题 340
附录A 常用ASCII字符 341
附录B 运算符 342
附录C 常用标准库函数 344
C.1 数学函数 344
C.2 字符函数 345
C.3 字符串函数 345
C.4 输入输出函数 346
C.5 进程函数 348
C.6 内存分配函数 348
C.7 时间函数 348
C.8 随机数产生器函数 349
C.9 类型转换函数 349
参考文献 350