第1章 C语言概述 1
1.1 C语言简介 1
1.1.1 程序设计语言的概念 1
1.1.2 C语言的发展历史 1
1.1.3 C语言的特点 1
1.2 认识C语言程序 2
1.2.1 从Hello World程序开始 2
1.2.2 C语言程序的组成 2
1.3 C语言程序的执行过程 3
1.3.1 从编写C语言程序到执行该程序的完整过程 3
1.3.2 计算机是如何执行程序的 4
1.4 C语言程序的上机步骤 4
1.4.1 C语言程序上机环境介绍 4
1.4.2 C语言程序上机步骤 4
习题 4
第2章 数据类型、运算符与表达式 5
2.1 字符集和标识符 5
2.1.1 字符集 5
2.1.2 标识符 5
2.1.3 系统定义标识符 6
2.1.4 用户定义标识符 6
2.2 常量和变量 7
2.2.1 常量 7
2.2.2 变量 8
2.3 数据类型 9
2.3.1 整型数据 10
2.3.2 实型数据 11
2.3.3 字符型数据 12
2.4 运算符与表达式 13
2.4.1 运算符与表达式概述 14
2.4.2 算术运算符与算术表达式 15
2.4.3 赋值运算符与赋值表达式 17
2.4.4 关系运算符与关系表达式 18
2.4.5 逻辑运算符与逻辑表达式 20
2.4.6 条件运算符与条件表达式 21
2.4.7 逗号运算符与逗号表达式 22
2.5 数据类型转换 23
2.5.1 数据类型的自动转换 23
2.5.2 数据类型的强制转换 23
习题 24
第3章 顺序结构程序设计 26
3.1 C语言语句概述 26
3.1.1 简单语句 26
3.1.2 复合语句 28
3.1.3 流程控制语句 28
3.1.4 空语句 28
3.2 数据输入与输出 28
3.2.1 格式输入/输出函数 28
3.2.2 字符输入/输出函数 32
3.3 顺序结构程序设计举例 33
习题 35
第4章 选择结构程序设计 38
4.1 if语句 38
4.1.1 if语句的基本形式 38
4.1.2 if语句的嵌套 39
4.2 switch语句与break语句 41
4.2.1 switch语句 41
4.2.2 break语句 42
4.3 选择结构程序设计举例 43
习题 48
第5章 循环结构程序设计 52
5.1 while语句 52
5.1.1 while语句的基本形式 52
5.1.2 while语句的应用 53
5.2 do-while语句 54
5.2.1 do-while语句的基本形式 54
5.2.2 do-while语句的应用 55
5.3 for语句 56
5.3.1 for语句的基本形式 56
5.3.2 for语句的应用 57
5.4 break语句和continue语句 58
5.4.1 break语句 58
5.4.2 continue语句 59
5.5 goto语句 60
5.5.1 goto语句的基本形式 60
5.5.2 goto语句的应用 60
5.6 循环的嵌套 63
5.7 循环结构程序设计举例 66
习题 72
第6章 数组 77
6.1 一维数组 77
6.1.1 一维数组的定义 77
6.1.2 一维数组的初始化 78
6.1.3 一维数组的引用 78
6.1.4 一维数组应用举例 79
6.2 二维数组 80
6.2.1 二维数组的定义 80
6.2.2 二维数组的初始化 81
6.2.3 二维数组的引用 83
6.2.4 二维数组应用举例 83
6.3 字符数组和字符串 87
6.3.1 字符数组的定义 87
6.3.2 字符数组的初始化 88
6.3.3 字符数组的引用 88
6.3.4 字符数组的输出 88
6.3.5 字符数组的输入 89
6.3.6 字符数组的应用举例 91
习题 92
第7章 函数 94
7.1 函数概述 94
7.2 函数的定义 96
7.2.1 函数的定义形式 96
7.2.2 函数参数的说明 97
7.2.3 函数定义举例 97
7.3 函数的参数和函数的返回值 98
7.3.1 函数的形式参数和实际参数 98
7.3.2 函数的返回值 99
7.4 函数的调用与声明 99
7.4.1 函数调用的形式 100
7.4.2 函数调用的方式 100
7.4.3 函数的声明 100
7.5 函数的参数传送 101
7.5.1 实参与形参之间的数据单向传送 102
7.5.2 数组作参数 103
7.6 函数的嵌套调用和递归调用 106
7.6.1 函数的嵌套调用 106
7.6.2 函数的递归调用 107
7.7 内部变量和外部变量 111
7.7.1 内部变量 111
7.7.2 外部变量 112
7.8 变量的存储类别 113
7.8.1 变量的存储类别概述 113
7.8.2 内部变量的存储类别 114
7.8.3 外部变量的存储类别 116
7.9 内部函数和外部函数 117
7.9.1 内部函数 117
7.9.2 外部函数 118
7.10 程序举例 118
习题 120
第8章 编译预处理 126
8.1 文件包含 126
8.2 宏定义 127
8.2.1 不带参数的宏定义 127
8.2.2 带参数的宏定义 128
8.3 条件编译 129
8.3.1 #if 129
8.3.2 #ifdef和#ifndef 130
习题 131
第9章 指针 134
9.1 指针和地址 134
9.2 指针变量和指针变量的赋值 135
9.2.1 指针变量 135
9.2.2 指针变量的赋值 136
9.3 指针和函数参数 137
9.4 指针和数组 139
9.4.1 一维数组和数组元素的地址 139
9.4.2 通过一维数组名和指针引用数组元素 140
9.4.3 引用一维数组元素的方法总结 142
9.5 地址运算 142
9.5.1 指针与整数相加、减运算 142
9.5.2 指针赋值 144
9.5.3 同一数组中各元素地址间的关系运算与相减运算 144
9.6 字符指针和有关函数 145
9.7 指针数组和指向指针的指针 147
9.7.1 指针数组的定义 148
9.7.2 指针数组的初始化 148
9.7.3 字符指针数组 150
9.7.4 指向数组的指针 150
9.7.5 命令行参数 151
9.8 指针与函数 152
9.8.1 指针作为函数参数 152
9.8.2 指针作为函数的返回值 153
9.8.3 指向函数的指针 154
习题 155
第10章 结构体与共用体 162
10.1 结构体 162
10.1.1 结构体类型的定义 162
10.1.2 结构体变量与指向结构体变量的指针变量的定义 163
10.1.3 结构体变量的引用 164
10.1.4 结构体数组 165
10.1.5 结构体变量作为函数的参数 168
10.2 链表 172
10.2.1 内存分配函数和回收函数 172
10.2.2 用指针和结构体构成链表 174
10.2.3 单向链表的建立 175
10.2.4 对链表的删除操作 178
10.2.5 对链表的插入操作 179
10.3 共用体 180
10.3.1 共用体类型的定义 180
10.3.2 共用体变量的定义 181
10.3.3 共用体变量的引用 181
10.3.4 共用体类型数据在内存中的存储 182
10.4 枚举类型 184
10.4.1 枚举类型的定义 184
10.4.2 枚举类型变量的定义和引用 185
10.5 typedef的应用 186
10.5.1 用typedef对基本类型定义别名 186
10.5.2 用typedef对构造类型定义别名 187
10.5.3 typedef的应用举例 188
习题 189
第11章 位运算 192
11.1 位运算符和位运算 192
11.1.1 &(按位与运算符) 192
11.1.2 |(按位或运算符) 193
11.1.3 ∧(按位异或运算符) 193
11.1.4 ~(按位取反运算符) 193
11.1.5 <<(左移运算符) 194
11.1.6 >>(右移运算符) 194
11.1.7 位运算符的优先级和结合性 194
11.1.8 复合位运算赋值运算符 195
11.1.9 位运算的应用 195
11.2 位运算举例 196
习题 199
第12章 文件 201
12.1 文件概述 201
12.1.1 ASCII码文件与二进制文件 201
12.1.2 缓冲文件系统 202
12.1.3 文件型指针 202
12.2 文件的打开与关闭 203
12.2.1 文件的打开 203
12.2.2 文件的关闭 205
12.3 文件的读/写操作 205
12.3.1 fputc函数与fgetc函数的使用 206
12.3.2 fgets函数与fputs函数的使用 209
12.3.3 fscanf函数与fprintf函数的使用 210
12.3.4 按数据块方式读/写——fwrite函数与fread函数 212
12.4 文件的定位 214
习题 216
附录1 ASCII码表 219
附录2 C语言关键字 220
附录3 运算符的优先级和结合性 221
参考文献 222