第1章C语言概述 1
1.1程序与程序设计语言 1
1.2 C语言简史 2
1.3 C语言的特点 4
1.4简单的C语言程序 4
1.5 C语言程序的开发步骤 7
1.6 C语言程序的开发环境 8
习题 12
第2章 基本数据类型、运算符与表达式 13
2.1概述 13
2.2数据类型 14
2.2.1基本数据类型 14
2.2.2类型修饰符 14
2.3常量 15
2.3.1整型常量 16
2.3.2实型常量 16
2.3.3字符常量 16
2.3.4字符串常量 17
2.3.5符号常量 17
2.4变量 18
2.4.1变量的定义 19
2.4.2变量的引用 19
2.5运算符与表达式 20
2.5.1算术运算符和算术表达式 20
2.5.2自增、自减运算符 21
2.5.3逗号运算符和逗号表达式 22
2.5.4位运算 22
2.5.5 C语言的运算符 23
2.6各种数据类型之间的转换 24
2.6.1隐式类型转换 24
2.6.2强制类型转换 25
习题 26
第3章 顺序结构程序设计 28
3.1程序设计的3种基本结构 28
3.2引例 29
3.3赋值表达式和赋值语句 29
3.4格式输入和输出 30
3.4.1格式输出函数printf() 30
3.4.2格式输入函数scanf() 34
3.5字符的输入和输出 36
3.5.1字符输出函数putchar() 37
3.5.2字符输入函数getchar() 37
习题 38
第4章 选择结构程序设计 40
4.1引例 40
4.2关系运算符和关系表达式 41
4.3逻辑运算符和逻辑表达式 42
4.4 if语句 43
4.4.1 if结构 43
4.4.2 if-else结构 45
4.4.3 if-else if结构 46
4.4.4 if的嵌套 48
4.5 switch语句 50
4.6条件运算符和条件表达式 54
习题 55
第5章 循环结构程序设计 58
5.1引例 58
5.2 while语句 59
5.3 do-while语句 60
5.4 for语句 61
5.5循环的嵌套 63
5.6 3种循环语句的比较 65
5.7 break语句与continue语句 65
5.7.1 break语句 65
5.7.2 continue语句 66
习题 67
第6章 数组 71
6.1引例 71
6.2一维数组 72
6.2.1一维数组的定义 73
6.2.2一维数组的初始化 74
6.2.3一维数组的引用 76
6.3二维数组 77
6.3.1二维数组的定义 78
6.3.2二维数组的初始化 79
6.3.3二维数组的引用 80
6.4字符数组 83
6.4.1字符数组的定义 83
6.4.2字符数组的初始化 84
6.4.3字符数组的引用 85
6.4.4字符串的输入输出 86
6.4.5常用字符串处理函数 91
习题 99
第7章 函数 101
7.1引例 101
7.2函数的定义 103
7.3函数的参数与函数类型 105
7.3.1形式参数与实际参数 105
7.3.2函数的类型 107
7.4调用函数 108
7.4.1函数的一般调用 109
7.4.2函数的嵌套调用 109
7.4.3函数的递归调用 111
7.5数组作为函数的参数 113
7.5.1数组元素作为函数参数 113
7.5.2数组名作为函数参数 115
7.6变量的作用域与生存期 115
7.6.1局部变量与全局变量 115
7.6.2变量的存储类别 118
7.7内部函数与外部函数 122
7.8总结 123
习题 124
第8章 指针 127
8.1引例 127
8.2地址和指针 129
8.3指针变量 132
8.3.1指针变量的定义 133
8.3.2指针变量的引用 133
8.3.3指针变量作为函数参数 134
8.4指针与数组 137
8.4.1数组的指针 137
8.4.2指向数组的指针变量 138
8.4.3数组名作为函数参数 139
8.4.4指向数组的指针变量作为函数参数 142
8.4.5指针的基本操作 144
8.5指向字符串的指针变量 147
8.5.1 const在函数和指针中的使用 147
8.5.2字符串的引用 150
8.5.3字符指针作为函数参数 152
8.5.4字符指针和字符数组总结 153
8.6指向函数的指针 154
8.6.1指向函数的指针变量 154
8.6.2指向函数的指针作为函数参数 155
8.7指针数组和多级指针 159
8.7.1指针数组 159
8.7.2指向指针的指针 162
8.7.3指针和多维数组 164
8.7.4指向多维数组的指针 165
8.7.5指针的赋值 166
8.7.6多维数组、指针和函数 167
8.8动态内存分配 169
习题 173
第9章 构造数据类型 175
9.1引例 175
9.2结构体 176
9.2.1建立结构体类型 176
9.2.2结构体类型变量的定义和初始化 176
9.2.3结构体类型变量的引用 178
9.2.4结构体数组 178
9.2.5嵌套结构体 180
9.2.6指向结构体的指针变量 182
9.2.7向函数传递结构体信息 184
9.2.8结构体的其他特性 187
9.2.9结构体中使用字符数组还是字符指针 189
9.3共用体 192
9.3.1建立共用体类型 192
9.3.2共用体类型变量的定义和初始化 192
9.3.3共用体类型变量的引用 193
9.4 typedef类型定义 195
习题 198
第10章 编译预处理 199
10.1宏定义 199
10.1.1#define 199
10.1.2带参数的#define 201
10.1.3利用宏参数创建字符串 203
10.2文件包含 203
10.3其他指令 204
10.3.1#undef 204
10.3.2条件编译 205
10.3.3#error 207
10.3.4#pragma 207
习题 207
第11章 文件 209
11.1引例 209
11.2文件的概念 210
11.2.1文件流和文件指针 210
11.2.2内存缓冲区 211
11.3文件的打开与关闭 212
11.3.1打开文件 212
11.3.2关闭文件 213
11.4文件的顺序读写 214
11.4.1每次一个字符的读写文件 214
11.4.2每次一串字符的读写文件 217
11.4.3以格式化方式读写文件 219
11.4.4向文件读写一组数据 222
11.5随机读写数据文件 224
11.5.1文件的位置指示器 224
11.5.2文件的定位 225
11.6出错检测 230
11.7文件操作中用到的函数原型小结 231
习题 232
附录A 扩展ASCⅡ字符集 235
附录B C语言关键字 237
B.1数据类型关键字 237
B.2流程控制关键字 238
附录C C语言运算符 239
附录D ANSI C库函数 242
参考文献 262