前言 1
第1章 C语言程序设计基础 1
1.1 程序设计及程序设计语言 1
1.1.1 程序设计语言的发展 1
1.1.2 C语言的发展过程 2
1.2 C语言的特点 3
1.3 源程序的编辑、编译、连接与运行 4
1.4 C程序结构 5
1.4.1 简单的C程序介绍 5
1.4.2 C程序结构 7
习题 8
第2章 C语言的数据类型与基本操作 10
2.1 常量与变量 10
2.1.1 常量 10
2.1.2 变量 13
2.2 标识符和关键字 15
2.3 整型数在计算机中的存储方式 17
2.4 有符号的数据类型和无符号的数据类型 18
2.5 运算符和表达式 19
2.5.1 赋值运算符和赋值表达式 21
2.5.2 算术运算符和算术表达式 23
2.5.4 关系运算符和关系表达式 25
2.5.3 长度测试运算符sizeof 25
2.5.5 逻辑运算符与逻辑表达式 26
2.5.6 条件运算符与条件运算表达式 28
2.5.7 逗号运算符与逗号表达式 30
2.5.8 位运算 31
2.6 不同类型数据间的转换 34
习题 37
第3章 顺序结构程序设计 42
3.1 算法 42
3.1.1 算法的组成要素 42
3.1.2 算法的表示方法 43
3.1.3 算法设计举例 46
3.2 C语句概述 51
3.2.1 控制语句 51
3.2.2 表达式语句 52
3.2.3 复合语句 52
3.3 数据的输入和输出 53
3.3.1 数据的输出函数 53
3.3.2 scanf函数 58
3.4 getchar函数与putchar函数 62
3.4.1 字符输出函数putchar() 62
3.4.2 字符输入函数getchar() 63
习题 64
4.1 if语句 68
4.1.1 if语句的形式 68
第4章 选择结构程序设计 68
4.1.2 if语句的嵌套 72
4.2 switch语句 75
4.3 程序举例 77
习题 79
第5章 循环结构程序设计 84
5.1 while语句 84
5.2 do-while语句 90
5.3 for语句 92
5.4 三种循环语句的比较 96
5.5 循环的嵌套 96
5.6 break语句和continue语句 101
5.6.1 break语句 102
5.6.2 continue语句 102
5.7 综合实例 103
习题 109
第6章 函数 115
6.1 函数概述 115
6.2 函数的定义与声明 116
6.2.1 函数定义 117
6.2.2 函数的参数和返回值 118
6.2.3 函数的声明 118
6.3.2 调用函数时数据的传递 119
6.3.1 调用函数的一般形式 119
6.3 函数的调用 119
6.3.3 函数的嵌套调用 121
6.3.4 函数的递归调用 122
6.4 局部变量和全局变量 126
6.4.1 局部变量 126
6.4.2 全局变量 128
6.5 变量的存储属性 131
6.5.1 自动变量(auto) 131
6.5.2 寄存器变量(register) 133
6.5.3 静态变量(static) 133
6.5.4 外部变量 134
6.6.1 宏定义 136
6.6 编译预处理 136
6.6.2 文件包含 141
6.6.3 条件编译 142
习题 144
第7章 数组 148
7.1 一维数组 148
7.1.1 一维数组的定义 148
7.1.2 一维数组的初始化 149
7.1.3 一维数组元素的引用 149
7.1.4 一维数组的使用 149
7.2 二维数组和多维数组 155
7.2.1 二维数组和多维数组的概念及其定义 155
7.2.2 二维数组和多维数组的引用 157
7.2.3 二维数组的初始化 158
7.2.4 二维数组的经典实例 159
7.3 字符数组 162
7.3.1 字符数组的定义 162
7.3.2 字符数组的输入输出 163
7.3.3 常用字符串函数 164
7.3.4 字符数组的使用 167
7.4 数组应用实例 168
7.4.1 排序 168
7.4.2 二分查找 171
习题 173
第8章 指针 175
8.1 地址和指针 175
8.1.1 地址 175
8.1.2 指针 176
8.2 指针变量 177
8.2.1 指针变量的说明 177
8.2.2 指针变量的运算 178
8.3 指针作为函数参数 178
8.3.1 指针常量作为函数参数 178
8.3.2 程序实例 180
8.4.1 指向数组的指针变量 181
8.4 指针与数组 181
8.4.2 通过指针引用数组元素 182
8.4.3 通过指针引用数组元素时几个注意的问题 182
8.4.4 数组名作函数参数 184
8.4.5 程序实例 185
8.5 指针的运算 186
8.6 用指针访问字符串 186
8.6.1 指针和字符串的关系 186
8.6.2 用指针处理字符串 187
8.7 指针数组和指向指针的指针 190
8.7.1 指针数组 190
8.7.3 指向指针的指针的应用 191
8.7.2 指向指针的指针 191
8.7.4 带形参的main函数 193
8.8 指向函数的指针 195
8.8.1 函数指针的概念 195
8.8.2 函数指针的应用 196
习题 198
第9章 结构体和共用体 201
9.1 概述 201
9.2 结构体与结构体类型变量 201
9.2.1 结构体类型的定义 201
9.2.2 结构体类型变量的定义 202
9.2.3 结构体变量的引用 204
9.3 结构体数组 205
9.2.4 结构体变量的初始化 205
9.4 指向结构体类型数据的指针 207
9.4.1 指向结构体变量的指针 207
9.4.2 指向结构体数组的指针 209
9.4.3 结构体指针变量作为函数的参数 210
9.4.4 结构体与函数的类型 212
9.5 链表 214
9.5.1 链表的概念 214
9.5.2 动态存储分配 215
9.5.3 链表的基本操作 217
9.6.1 共用体的概念和定义 221
9.6 共用体 221
9.6.2 共用体变量的引用 223
9.7 枚举类型 225
9.7.1 枚举的定义与说明 225
9.7.2 枚举类型变量的赋值与引用 226
9.8 用Typedef定义类型 227
9.9 应用实例——学生成绩管理系统 228
习题 239
第10章 文件 242
10.1 文件的概念 242
10.1.1 文件的类型 242
10.1.2 文件的访问方式 243
10.2 格式化数据文件操作 243
10.2.1 打开文件函数fopen() 244
10.2.2 关闭文件函数fclose() 245
10.2.3 从文件中格式化输入数据fscanf() 246
10.2.4 向文件中格式化输出函数fprintf() 246
10.2.5 文件建立 246
10.2.6 文件访问 247
10.2.7 文件修改 248
10.3 字符数据文件操作 250
10.3.1 从指定文件中读取一个字符 250
10.3.2 putc()函数——指向文件输出一个字符 251
10.3.3 fgets()函数——从文件中读一个字符串 251
10.3.4 fputs()函数——向指定文件输出一个字符串 251
10.3.5 feof()函数——文件操作是否到文件尾的检测函数 252
10.4 fread()与fwrite()函数 253
10.5 文件位置定位与错误处理函数 254
10.5.1 rewind()函数——将文件读写指针定位于文件头 254
10.5.2 fseek()函数——重新定位文件位置指针 255
10.5.3 ftell()函数——测试当前读写指针位置 255
10.5.4 ferror()函数——检测文件流操作中的错误 256
10.5.5 clearerr()函数——清除出错标志 256
10.6 应用实例——大奖赛评分系统 257
习题 261
附录A ASCII字符编码一览表 266
附录B C语言库函数 267
参考文献 274