第1章 C语言概述 1
1.1 C语言简述 1
1.2 C语言程序的构成 1
1.2.1 初步认识C语言程序 1
1.2.2 C语言程序的基本结构 2
1.2.3 仅由main函数构成的C语言程序的一般结构 3
1.2.4 C语句的构成 4
1.3 C语言程序的调试与运行 5
1.3.1 开发一个C语言程序 5
1.3.2 Turbo C 2.0的运行环境和启动 6
1.3.3 Turbo C 2.0集成开发环境的使用 6
1.3.4 编辑、运行C语言程序 9
习题 10
第2章 C语言的基本数据类型、常量和变量 13
2.1 C语言的基本数据类型 13
2.1.1 5种基本数据类型 13
2.1.2 修饰符 13
2.1.3 存储格式 14
2.2 常量 15
2.2.1 整型常量 15
2.2.2 实型常量 16
2.2.3 字符常量 16
2.2.4 字符串常量 17
2.2.5 符号常量 18
2.3 变量 18
2.3.1 变量的定义 19
2.3.2 变量的初始化 19
习题 19
第3章 运算符和表达式 22
3.1 算术运算符和算术表达式 22
3.1.1 算术运算符 22
3.1.2 算术表达式 22
3.1.3 算术运算符的优先级和结合性 23
3.1.4 算术表达式的数据类型 23
3.2 赋值运算符、赋值表达式和赋值语句 25
3.2.1 赋值运算符 25
3.2.2 赋值表达式 26
3.2.3 赋值语句 27
3.2.4 赋值表达式的类型 27
3.3 自增、自减运算符 29
3.4 关系运算符和关系表达式 30
3.4.1 关系运算符 30
3.4.2 关系表达式 30
3.5 逻辑运算符和逻辑表达式 31
3.5.1 逻辑运算符 31
3.5.2 逻辑表达式 31
3.6 逗号运算符和逗号表达式 32
3.7 求占字节运算符(sizeof) 33
习题 34
第4章 数据的输入和输出 37
4.1 scanf()函数 37
4.2 printf()函数 39
4.3 scanf()和printf()应用举例 42
4.4 getchar()函数与putchar()函数 45
习题 46
第5章 结构化程序设计和C语言程序控制语句 50
5.1 流程图和结构化程序设计 50
5.1.1 流程图 50
5.1.2 结构化程序设计 51
5.2 选择结构语句 52
5.2.1 if语句 52
5.2.2 if else 语句 53
5.2.3 if else语句的嵌套 54
5.2.4 if-else if-else语句 55
5.2.5 条件运算符及表达式 57
5.3 switch语句和break语句 58
5.3.1 switch语句 58
5.3.2 break语句 60
5.4 循环结构 62
5.4.l for语句 62
5.4.2 for语句的其他形式 63
5.4.3 while语句 64
5.4.4 do-while语句 65
5.4.5 多重循环结构 66
5.5 其他控制语句 68
5.5.1 break语句 68
5.5.2 exit()函数 69
5.5.3 continue语句 69
5.5.4 goto语句 70
习题 71
第6章 数组和字符串 77
6.1 一维数组的定义和元素的引用 77
6.1.1 一维数组的定义 77
6.1.2 一维数组的初始化 78
6.1.3 一维数组的引用 79
6.2 二维数组 80
6.2.1 二维数组的定义 80
6.2.2 二维数组的初始化 81
6.2.3 二维数组元素的引用 81
6.3 字符型数组和字符串 82
6.3.1 字符型数组的定义 82
6.3.2 字符型数组的初始化 83
6.3.3 字符数组的输入和输出 84
6.4 字符串处理函数 86
6.4.1 求字符串长度函数strlen() 86
6.4.2 字符串拷贝函数strcpy() 86
6.4.3 字符串比较函数strcmp() 86
6.4.4 字符串连接函数strcat() 87
6.5 数组应用举例 88
习题 91
第7章 指针 96
7.1 指针的概念和定义 96
7.1.1 指针的概念 96
7.1.2 指针变量的定义 97
7.2 指针和简单变量 97
7.2.1 指针的初始化和赋值 97
7.2.2 空指针和void型指针 98
7.2.3 用指针访问变量的值 98
7.3 指针和一维数组 99
7.4 字符型指针和字符型一维数组 102
7.4.1 字符指针与字符数组的关系 102
7.4.2 对字符型指针进行字符串的整体赋值 103
7.4.3 用指针处理字符串举例 103
7.5 指针和二维数组 105
7.5.1 对二维数组的再认识 105
7.5.2 把二维数组看作一维数组用指针引用其元素 106
7.5.3 定义行指针引用二维数组 107
7.5.4 指针数组 109
7.6 二级指针 111
7.6.1 二级指针的概念 111
7.6.2 二级指针的定义 111
7.6.3 二级指针应用举例 112
习题 114
第8章 函数 120
8.1 函数的构成和定义 121
8.1.1 函数的构成 121
8.1.2 函数的定义 121
8.1.3 对函数定义的说明 122
8.1.4 函数的调用 123
8.1.5 函数参数传递 123
8.1.6 函数的说明 124
8.2 函数参数传递举例 124
8.3 返回值是指针的函数 128
8.4 函数指针与实参是函数名的传递 129
8.4.1 函数指针 129
8.4.2 实参是函数名的传递 131
8.5 函数的递归调用 132
8.5.1 递归调用 132
8.5.2 递归执行过程 133
8.5.3 用递归算法求解问题的条件 134
8.6 main()函数的参数 135
习题 136
第9章 变量的存储类型和动态分配内存 142
9.1 变量的存储类型 142
9.2 变量及其作用域和生存期 143
9.2.1 局部变量和全局变量 143
9.2.2 局部变量的作用域和生存期 144
9.2.3 全局变量的作用域和生存期 146
9.3 说明符extern和static 146
9.3.1 全局变量的说明符 146
9.3.2 外部函数、内部函数及说明符 148
9.3.3 说明符extern和static应用举例 150
9.4 动态分配内存 151
9.4.1 动态分配内存的概念 151
9.4.2 动态分配内存函数 152
习题 154
第10章 编译预处理 158
10.1 宏定义和宏替换 158
10.1.1 宏定义 158
10.1.2 带参数的宏定义 159
10.1.3 宏定义的解除 161
10.2 文件包含 161
10.3 条件编译 163
10.3.1 #if语句 163
10.3.2 #ifdef语句 164
10.3.3 #ifndef语句 165
习题 165
第11章 结构体和共用体 167
11.1 类型定义(typedef) 167
11.2 结构体 168
11.2.1 结构体类型的定义 168
11.2.2 结构体变量的定义 170
11.2.3 结构体类型变量的引用 171
11.2.4 结构体数组的定义、初始化和引用 173
11.2.5 结构体指针的定义、初始化和使用 174
11.2.6 函数间结构体的传递 176
11.2.7 结构体类型函数和结构体类型指针函数 179
11.2.8 链表 181
11.3 共用体 184
习题 186
第12章 位运算 192
12.1 按位逻辑运算 192
12.2 移位运算 193
12.3 应用举例 195
习题 197
第13章 文件 200
13.1 文件概念 200
13.1.1 C语言的数据文件 200
13.1.2 文件的存取方式 200
13.2 文件的打开与关闭 201
13.2.1 文件指针 201
13.2.2 打开文件 201
13.2.3 文件的关闭 202
13.3 文件读写函数 202
13.3.1 字符读写函数getc()和fgetc()、putc()和fputc() 203
13.3.2 字符串读写函数fgets()和fputs() 204
13.3.3 带格式的读写函数fscanf()和fprintf() 206
13.3.4 数据块读写函数fread()和fwrite() 207
13.4 检测文件末尾函数feof() 208
13.5 文件的定位与存取 209
13.5.1 文件的定位 209
13.5.2 文件的存取举例 210
习题 211
第14章 精选题解 216
附录1 常见错误分析 233
附录2 运算符的优先级和结合性 238
附录3 常用字符与 ASCII代码对照表 239
附录4 库函数 240