第1章 C语言和计算机 1
1.1计算机工作原理 2
1.2在C语言中使用计算机的五大组成部件 3
1.3 C语言函数和程序 5
1.4“懂”C语言的计算机 9
1.4.1虚拟的C语言计算机 9
1.4.2用VC 6.0编译程序 9
1.5与虚拟C语言计算机深入交流 13
1.5.1 C语言的一些语法规则 13
1.5.2 printf函数的使用 14
1.5.3一个复杂程序的执行顺序 16
1.6 C语言语句简析 19
练习1 20
第2章 基本数据类型 23
2.1整型 24
2.1.1整型分类 24
2.1.2整型字面量 26
2.1.3整型数据的输入/输出 27
2.1.4查看整数的存储状态 31
2.1.5整型的使用 32
2.2浮点型 33
2.2.1浮点型分类 33
2.2.2浮点型字面量和浮点型数据的输入/输出 34
2.2.3浮点型的误差 36
2.3字符型 37
2.3.1字符型数据的编码 37
2.3.2字符型字面量 39
2.3.3字符型数据的输入/输出 40
2.4再谈printf函数的使用 42
2.5典型例题 43
2.6深度探究 45
2.6.1输入缓冲区 45
2.6.2 scanf函数对空格符或换行符的处理 47
2.6.3匹配不成功对scanf函数的影响 48
2.6.4当用户一次输入多个数据时,数据之间的分隔符 50
2.6.5验证程序中变量的实际值是确定的 50
练习2 51
第3章 表达式 55
3.1概述 56
3.2赋值表达式 59
3.2.1赋值操作符 59
3.2.2类型不匹配时的赋值操作 61
3.2.3复合赋值操作符 63
3.3算术表达式 63
3.3.1算术表达式求值 63
3.3.2强制类型转换操作符 65
3.3.3自增自减操作符 66
3.4逗号表达式 67
3.5典型例题 68
3.6深度探究 71
3.6.1表达式的理解 71
3.6.2自增操作符的误用 72
练习3 73
第4章 逻辑运算和选择结构 76
4.1 C语言中的“逻辑型” 77
4.2关系表达式 78
4.3逻辑表达式 79
4.3.1逻辑操作符 79
4.3.2逻辑表达式求值 81
4.4简单的if选择结构 82
4.4.1 if选择结构分析 82
4.4.2 if选择结构用法 85
4.5 if-else选择结构 86
4.5.1 if-else选择结构的形式和用法 86
4.5.2选择结构嵌套 88
4.6条件操作符 92
4.7 switch选择结构 93
4.7.1基本的switch选择结构 93
4.7.2有break语句的switch选择结构 95
4.8典型例题 96
练习4 101
第5章 循环结构 107
5.1 while循环结构 108
5.1.1 while循环结构分析 108
5.1.2 while循环结构用法 111
5.2 for循环结构 115
5.2.1 for循环结构分析 115
5.2.2 for循环结构用法 116
5.3 break语句和continue语句 118
5.4循环嵌套 120
5.5 do-while循环结构 123
5.6典型例题 124
练习5 129
第6章 数组 134
6.1一维数组 135
6.1.1一维数组定义 135
6.1.2一维数组初始化 137
6.1.3一维数组应用 138
6.2多维数组 142
6.2.1二维数组定义及初始化 142
6.2.2二维数组应用 143
6.2.3三维数组简介 145
6.3字符型数组和字符串 146
6.3.1字符型数组应用 146
6.3.2字符串分析 148
6.3.3字符串输入/输出 148
6.3.4字符串相关程序示例 149
6.4综合实例 151
练习6 153
第7章 函数 158
7.1函数定义 159
7.2函数调用与函数声明 161
7.2.1函数调用分析 161
7.2.2函数声明的作用 164
7.2.3使用参数类型为一维数组的函数 165
7.3作用域 166
7.3.1变量作用域 166
7.3.2文件作用域扩展 169
7.3.3全局变量作用域可以扩展的原因 170
7.3.4使用关键字static限制文件作用域 172
7.4用函数编程 174
7.4.1用函数编程示例 174
7.4.2函数重用 176
7.5递归 178
7.5.1递归算法与递归函数 178
7.5.2递归算法示例 181
7.6库函数简介 185
7.6.1 getchar函数、getch函数和getche函数 185
7.6.2 rand函数、srand函数和time函数 187
7.6.3字符串处理函数 187
7.7综合实例 189
7.8深度探究 191
7.8.1例7-23中reverse函数存在的问题 191
7.8.2变量的存储类型 192
练习7 192
第8章 预处理 197
8.1程序编译 198
8.2宏定义 198
8.2.1简单宏 198
8.2.2参数化宏 199
8.3文件包含 201
8.4条件编译 202
练习8 204
第9章 指针 207
9.1指针类型 208
9.1.1变量的左值和右值 208
9.1.2指针变量的定义和赋值 210
9.2指针变量的作用 211
9.2.1指针操作符 211
9.2.2指针变量用法 211
9.2.3空指针 213
9.3指针与函数 214
9.3.1指针作为函数参数 214
9.3.2指针作为函数返回值 217
9.4地址可以参与的运算 218
9.5指针与数组 219
9.5.1指针与一维数组 220
9.5.2指针与二维数组 223
9.5.3指针与字符串 226
9.6 main函数和命令行参数 230
9.7指向函数的指针变量 231
9.8使用堆空间 233
9.9典型例题 235
9.10深度探究 240
9.10.1有pi=&i,则★pi与变量i标识了同一个存储单元 240
9.10.2表达式的值 240
9.10.3指针变量的称谓 241
9.10.4数组元素a [i]的理解 241
9.10.5数组变量与指针变量的比较 242
练习9 242
第10章 用户自定义数据类型 250
10.1结构型 251
10.1.1结构型的定义 251
10.1.2指向结构型的指针变量 253
10.1.3链表 255
10.2联合型 258
10.3枚举型 259
10.4为类型自定义别名 260
10.5深度探究 261
存储单元的类型 261
练习10 262
第11章 文件 265
11.1文件概述 266
11.2文件的打开和关闭 266
11.2.1文本文件与二进制文件 266
11.2.2(新建后)打开文件 267
11.2.3文件关闭 268
11.3文件读/写 268
11.3.1 fputc函数和fgetc函数 268
11.3.2文件结束状态 270
11.3.3 fprintf函数和fscanf函数 272
11.3.4 fwrite函数和fread函数 274
11.4标准设备文件 275
11.5文件随机读/写 276
11.5.1调整文件当前位置指针变量指向的位置 276
11.5.2既可读又可写的文件 277
练习11 278
第12章 位运算 281
12.1位操作符 282
12.1.1按位与操作符& 282
12.1.2按位或操作符| 282
12.1.3异或操作符? 283
12.1.4取反操作符~ 283
12.1.5左移操作符<< 283
12.1.6右移操作符>> 284
12.2位运算示例 284
12.3位段 285
练习12 286
第13章 数字化信息编码 287
13.1二进制 288
13.1.1位权 288
13.1.2十进制数转换成二进制数 288
13.1.3二进制的计算 290
13.2计算机的计算 291
13.3整数的编码 292
13.4计算机中整数的特点 294
13.4.1整数加法示例 294
13.4.2须参与运算的补码符号位 295
13.4.3计算机中整数构成一个环 296
13.5小数的编码 297
13.5.1定点小数 297
13.5.2浮点数编码 298
13.5.3浮点数的特点 299
13.6字符的编码 300
13.6.1机内码 300
13.6.2输入码和字形码 301
13.7八进制和十六进制 302
附录 303
附录A C语言关键字 303
附录B格式化输入输出 303
格式化输出 303
格式化输入 307
附录C ASCII码表 309
附录D常用的C语言库函数 310
附录E C语言操作符 313
参考文献 314