第1章 C语言概论 1
1.1 概论 1
1.1.1 计算机的基本组成 1
1.1.2 指令和程序 2
1.1.3 程序设计语言 2
1.2 C程序设计过程 4
1.2.1 C程序设计的一般步骤 4
1.2.2 C编程环境 5
1.2.3 Visual C+++环境C程序开发过程 7
1.3 C程序结构 8
1.3.1 main函数 9
1.3.2 头文件的包含 10
1.3.3 注释 10
练习1 11
1.4 综合实例:演奏贝多芬《欢乐颂》 11
习题2 13
第2章 数据及其类型 15
2.1 数据的机内存储 15
2.1.1 内存及其组织形式 15
2.1.2 进制的概念 16
2.1.3 进制转换 17
2.1.4 整数的机内表示 20
2.1.5 多字节存储 20
2.1.6 实数的机内表示 21
2.1.7 非数值信息的机内表示 23
练习1 23
2.2 基本数据类型 24
2.2.1 整型 24
2.2.2 实型 25
2.2.3 字符型 26
2.2.4 实际位长 26
2.3 内存和变量 27
2.3.1 标识符 27
2.3.2 变量和变量定义 28
2.3.3 变量赋值和初始化 30
练习2 31
2.4 字面常量 31
2.4.1 整数 32
2.4.2 实数 32
2.4.3 字符常量和转义字符 33
2.4.4 字符串常量 34
练习3 35
2.5 标识符常量 36
2.5.1 #define标识符常量 36
2.5.2 const只读变量 37
2.6 综合实例:变量值的机内表示 37
习题2 39
第3章 数据的输入输出 42
3.1 输出函数printf概述 42
3.1.1 库函数原型和调用 42
3.1.2 转义输出 43
3.1.3 格式参数域 44
3.1.4 域参匹配 44
3.2 数据的格式输出 45
3.2.1 基本类型格式 45
3.2.2 类型修饰符 49
3.2.3 宽度和精度 53
3.2.4 对齐、前缀及填充符 55
3.2.5 单字符输出putchar 56
练习1 57
3.3 格式输入函数scanf 57
3.3.1 scanf函数功能 57
3.3.2 scanf控制格式 59
3.3.3 多数据输入 60
3.3.4 输入匹配 61
3.3.5 空读和域宽 62
3.3.6 输入中断和分隔 62
3.3.7 字符输入和键盘缓冲区 63
练习2 64
3.4 综合实例:列表显示数据 65
习题3 67
第4章 运算符和表达式 70
4.1 算术运算 70
4.1.1 算术运算符 70
4.1.2 数值类型转换 72
4.1.3 优先级和结合性 73
4.1.4 算术表达式的值和类型 74
4.1.5 代数式和表达式 75
练习1 77
4.2 赋值运算 77
4.2.1 左值和右值 77
4.2.2 数值截取和数值溢出 78
4.2.3 多重赋值 80
4.2.4 复合赋值 80
练习2 81
4.3 sizeof运算符 81
4.4 逗号运算符 82
4.5 自增和自减 82
4.5.1 一般使用方法 82
4.5.2 前缀和后缀的区别 83
4.5.3 注意事项 83
练习3 85
4.6 位运算 85
4.6.1 位逻辑运算 85
4.6.2 移位运算 87
4.6.3 几点说明 88
4.6.4 位运算应用 89
练习4 90
4.7 综合实例:交换算法 91
习题4 93
第5章 顺序和选择 95
5.1 语句概述 95
5.1.1 表达式语句和空语句 95
5.1.2 函数调用语句 96
5.1.3 语句块 96
5.1.4 控制语句 97
5.2 流程控制条件 98
5.2.1 关系运算及其表达式 98
5.2.2 逻辑运算及表达式 100
5.2.3 逻辑运算的优化 101
练习1 102
5.3 if语句 102
5.3.1 简单if语句 102
5.3.2 if..else语句 105
5.3.3 if..else if..else语句 106
5.3.4 嵌套if语句 108
5.3.5 ?:运算 110
练习2 112
5.4 switch语句 113
5.5 综合实例:简单计算器(上) 116
习题5 118
第6章 循环和转向 120
6.1 while语句 120
6.1.1 while语句的一般格式 120
6.1.2 while语句的循环程序设计 120
6.1.3 while语句的变化 123
6.2 do...while语句 124
6.2.1 do...while语句的一般格式 124
6.2.2 do...while语句的特点 125
练习1 125
6.3 for语句 126
6.3.1 for语句的一般格式 126
6.3.2 for语句的省略形式 128
练习2 129
6.4 循环嵌套 129
6.5 转向语句 1
6.5.1 break语句 132
6.5.2 continue语句 132
6.5.3 goto语句 133
练习3 134
6.6 综合实例:简单计算器(中) 135
习题6 138
第7章 基本结构化程序设计 141
7.1 算法和程序 141
7.2 算法的结构化描述 143
7.2.1 流程图 1
7.2.2 N.S图 145
7.2.3 PAD图 146
练习1 147
7.3 程序设计举例 147
7.3.1 求特定数 147
7.3.2 和积计算 150
7.3.3 方程求解 152
7.3.4 图案打印 155
7.4 综合实例:简单计算器(下) 158
习题7 162
第8章 函数 165
8.1 概述 165
8.2 函数的定义 166
8.2.1 函数定义的一般形式 167
8.2.2 函数参数的设计 169
8.2.3 函数类型和返回值 171
8.3 函数的调用 173
8.3.1 函数调用的一般形式 173
8.3.2 函数声明 174
8.3.3 参数传递方式 177
8.3.4 参数求值顺序 178
8.3.5 全局变量和局部变量 179
练习1 181
8.4 函数嵌套调用和递归调用 182
8.4.1 函数调用机制 182
8.4.2 函数嵌套调用 183
8.4.3 递归调用和递归函数 184
8.5 综合实例:递归设计 188
8.5.1 设计步骤 188
8.5.2 斐波那契数列 190
习题8 192
第9章 数组 194
9.1 一维数组 194
9.1.1 一维数组的定义和引用 194
9.1.2 一维数组的初始化 196
9.1.3 一维数组的简单应用 198
练习1 201
9.2 二维和多维数组 201
9.2.1 二维和多数数组的定义和引用 201
9.2.2 多维数组的本质 202
9.2.3 二维数组的初始化和赋值 204
9.2.4 二维数组的基本应用 206
练习2 208
9.3 字符数组和字符串 208
9.3.1 一维字符数组 208
9.3.2 二维字符数组 209
练习3 210
9.4 数组与函数 210
9.4.1 传递一维数组 210
9.4.2 传递多维数组 212
9.5 综合实例:排序 214
9.5.1 冒泡排序法 214
9.5.2 选择排序法 215
9.5.3 直接插入排序法 216
习题9 218
第10章 程序组织和预处理 221
10.1 作用域和可见性 221
10.1.1 作用域概述 221
10.1.2 函数原型作用域 221
10.1.3 函数作用域 221
10.1.4 块作用域 222
10.1.5 文件作用域 223
10.2 内存区和存储类型 224
10.2.1 内存区和存储方式 224
10.2.2 自动类型auto 225
10.2.3 寄存器类型register 226
10.2.4 static局部变量 226
10.2.5 多源文件和static全局变量 228
10.2.6 外部类型extern 229
练习1 230
10.3 内部函数和外部函数 231
10.3.1 内部函数 232
10.3.2 外部函数 233
练习2 234
10.4 编译预处理 234
10.4.1 宏定义 234
10.4.2 条件编译命令 236
10.4.3 文件包含命令 237
10.4.4 文件重复包含处理 238
练习3 239
10.5 综合实例:数组模型 240
习题10 242
第11章 指针 245
11.1 指针的定义和操作 245
11.1.1 地址和指针 245
11.1.2 指针的定义 246
11.1.3 指针的运算符&和 247
11.1.4 指针的初始化和赋值 248
11.1.5 指针的算术运算 250
练习1 251
11.2 指针和数组 252
11.2.1 指针和一维数组 252
11.2.2 指针和二维数组 255
11.2.3 指针数组 258
112.4 多级指针 260
练习2 260
11.3 指针和函数 261
11.3.1 指针作为函数的参数 261
11.3.2 返回指针的函数 264
11.3.3 指向函数的指针 265
练习3 267
11.4 void指针和动态内存 268
11.4.1 void指针 268
11.4.2 内存分配和释放 270
11.5 综合实例:josephus问题 273
习题11 275
第12章 字符指针和字符串处理 277
12.1 字符指针 277
12.1.1 字符指针定义和初始化 277
12.1.2 字符指针的使用 278
12.1.3 字符指针数组和多级字符指针 279
12.1.4 带参的main函数 280
12.1.5 const限定 282
练习1 283
12.2 字符串操作 284
12.2.1 字符串的输入 284
12.2.2 字符串输出 286
12.2.3 strcat和stmcat 287
12.2.4 strcpy和strncpy 288
12.2.5 strcmp和stmcmp 289
练习2 290
12.3 综合实例:自定义字符串函数的实现 291
习题12 294
第13章 结构、联合和枚举 297
13.1 结构类型 297
13.1.1 结构类型声明 297
13.1.2 结构类型变量的定义 298
13.1.3 结构类型变量的引用 300
13.1.4 重名问题 301
13.1.5 位域 302
练习1 303
13.2 结构数组和结构指针 304
13.2.1 定义和初始化 304
13.2.2 结构数组元素的引用 307
13.2.3 结构指针的成员引用 308
练习2 310
13.3 结构和函数 310
13.3.1 传递结构参数 311
13.3.2 返回结构 313
13.4 联合 314
13.4.1 联合的声明和定义 314
13.4.2 联合变量的引用 315
13.5 枚举 316
13.6 使用typedef 318
练习3 320
13.7 综合实例:简单链表 321
13.7.1 链表概述 321
13.7.2 链表的创建和遍历 322
13.7.3 链表的删除 324
13.7.4 链表结点的插入和添加 325
13.7.5 用链表求解josephus问题 327
习题13 330
第14章 文件 333
14.1 文件概述 333
14.1.1 文件分类 333
14.1.2 文件指针 334
14.1.3 文件打开和关闭 334
练习1 336
14.2 文件读写 336
14.2.1 字符读写 337
14.2.2 字符串读写 338
14.2.3 格式化读写 338
14.2.4 块数据读写 341
练习2 343
14.3 随机文件和定位操作 344
143.1 随机文件 344
14.3.2 定位操作 344
14.4 文件状态检测和错误处理 348
练习3 349
14.5 综合实例:学生信息的文件存取 349
习题14 352
实验部分 354
实验1 认识Visual C+++ 6.0中文版开发环境 354
实验内容 354
实验准备和说明 354
实验步骤 354
思考与练习 363
实验2 数据类型、运算符和表达式 364
实验内容 364
实验准备和说明 364
实验步骤 364
思考与练习 367
实验3 分支语句 368
实验内容 368
实验准备和说明 368
实验步骤 368
思考与练习 371
实验4 循环和基本程序设计 372
实验内容 372
实验准备和说明 372
实验步骤 372
思考与练习 375
实验5 函数 376
实验内容 376
实验准备和说明 376
实验步骤 376
思考与练习 379
实验6 数组 380
实验内容 380
实验准备和说明 380
实验步骤 380
思考与练习 383
实验7 程序组织、预处理和调试 384
实验内容 384
实验准备和说明 384
实验步骤 384
思考与练习 387
实验8 指针 388
实验内容 388
实验准备和说明 388
实验步骤 388
思考与练习 391
实验9 字符串和结构数组 392
实验内容 392
实验准备和说明 392
实验步骤 392
思考与练习 397
实验10 链表 398
实验内容 398
实验准备和说明 398
实验步骤 398
思考与练习 403
实验11 文件 404
实验内容 404
实验准备和说明 404
实验步骤 404
思考与练习 410
综合应用实习 411
实习题目 411
所需知识 411
界面要求 411
结构模型 411
操作及其算法实现 412
文档要求 413
附录 414
A 运算符优先级和结合性 414
B ASCII码表 415
C 常用C库函数 417
D 使用Turbo C 20 419
E 各章练习参考答案 423