第1章 C语言程序设计基础知识 1
1.1 引言 1
1.1.1 计算机语言与人类语言 1
1.1.2 程序语言的简史 2
1.2 C语言的简介 3
1.2.1 C语言的发展历史 3
1.2.2 C语言的特点 4
1.3 第一个C语言程序 5
1.4 计算机程序编制的几个步骤 6
1.4.1 用自然语言写文章的步骤 6
1.4.2 用计算机语言编制程序 7
1.4.3 一个编程实例 9
1.5 C语言常用符号 10
1.6 计算机的构成对C语言的影响 11
1.6.1 冯·诺依曼体系结构 12
1.6.2 计算机存储模型 12
习题一 13
第2章 简单的C程序设计 14
2.1 各种进位制的转换 14
2.1.1 常用进位制 14
2.1.2 进位制间的转换 15
2.2 基本数据类型 16
2.2.1 整型数据(Integer) 17
2.2.2 实型数据(Float) 20
2.2.3 字符型数据(Character) 22
2.2.4 符号常量 24
2.3.1 算术运算符和算术表达式 25
2.3 常用运算符及表达式 25
2.3.2 赋值运算符和赋值表达式 27
2.3.3 增1和减1运算符 28
2.3.4 位式运算 29
2.3.5 逗号运算符和逗号表达式 31
2.4 表达式语句 31
2.5 基本输入输出操作的实现 32
2.5.1 字符输入输出操作的实现 32
2.5.2 有格式输入输出操作的实现 33
2.6 输入输出操作中常见的错误分析 40
2.7 程序举例 41
2.8 上机实验内容 42
实验一 写出运行结果程序练习 42
习题二 43
实验二 按打印结果要求编写程序练习 43
实验三 简单编程练习 43
第3章 程序的控制结构与结构化程序设计方法 46
3.1 算法与算法的表示方法 46
3.1.1 算法的概念 46
3.1.2 算法的表示方法 47
3.2 顺序结构程序设计 49
3.2.1 顺序结构的流程图表示 49
3.2.2 顺序结构应用举例 50
3.3 选择结构程序设计 54
3.3.1 选择结构的应用场合 54
3.3.2 关系运算符和关系表达式 54
3.3.3 逻辑运算符和逻辑表达式 56
3.3.5 条件语句 57
3.3.4 选择结构的流程图表示 57
3.3.6 开关语句 65
3.4 循环结构 69
3.4.1 循环结构的应用场合 69
3.4.2 循环结构的流程图表示 69
3.4.3 循环语句 70
3.4.4 单重循环问题应用举例 72
3.4.5 嵌套循环及其应用举例 84
3.4.6 转移控制语句 88
3.5 结构化程序设计方法简介 94
3.6.1 什么是逐步求精方法? 95
3.6.2 什么是自顶向下的程序设计方法? 95
3.6 自顶向下、逐步求精的程序设计方法 95
3.6.3 逐步求精实现技术 96
3.6.4 应用举例 97
3.7 简单的程序调试方法 98
3.7.1 程序中常见的出错原因 99
3.7.2 Turbo C集成环境下的跟踪调试方法 100
3.7.3 其他排错方法 101
3.8 上机实验内容 102
实验一 身高预测 102
实验二 计算到期存款本息之和 102
实验三 猜数游戏 102
实验四 存款预算 102
实验五 抓交通肇事犯 103
实验七 计算礼炮声响次数 104
实验六 求解不等式 104
实验八 寻找最佳存款方案 105
习题三 107
第4章 函数与模块化设计方法 114
4.1 函数 114
4.1.1 函数的分类 114
4.1.2 函数的定义 115
4.1.3 函数的返回值 116
4.1.4 函数的调用与参数传递 116
4.1.5 函数原型的说明 119
4.2 宏定义 119
4.3 变量的作用域和存储类 121
4.3.1 变量的作用域 121
4.3.2 变量的存储类 125
4.4 模块化程序设计方法 127
4.4.1 模块化程序设计方法的指导思想 127
4.4.2 模块分解的原则 128
4.5 应用设计实例 129
4.6 多文件方式组织的程序 134
4.7 上机实验内容 136
实验一 小学生算术题Ⅰ 136
实验二 小学生算术题Ⅱ 137
实验三 计算最大公约数和最小公倍数 138
实验四 分析程序的运行结果 139
习题四 140
5.1.2 定义、引用和初始化 143
5.1.1 数组类型的应用场合 143
5.1 数组(Arrays) 143
第5章 数组与指针 143
5.1.3 一维数组应用举例 147
5.1.4 一维数组名作函数参数 152
5.1.5 二维数组及二维数组名作函数参数应用举例 161
5.1.6 字符数组(Character Arrays) 166
5.2 指针(Pointers) 171
5.2.1 指针的概念 171
5.2.2 为什么引入指针的概念 173
5.2.3 变量的指针与变量的指针作为函数参数 175
5.2.4 字符指针与字符指针作为函数参数 181
5.3.1 一维数组的地址和指针 185
5.3 指针和数组间的联系 185
5.3.2 二维数组的地址和指针 191
5.4 指针数组(Pointer Arrays) 196
5.5 指向指针的指针(Pointers to Pointers) 200
5.6 带参数的main函数和命令行参数 201
5.7 动态数组的实现 203
5.7.1 动态内存分配函数 203
5.7.2 一维动态数组的实现 205
5.7.3 二维动态数组的实现 206
5.8 关于面向过程的程序设计 207
5.9 关于防御性程序设计 207
5.10 关于程序质量的重要性 208
5.11 上机实验内容 209
实验一 产值翻番 209
实验二 餐饮服务调查打分 210
实验三 简单的口令检查程序 211
实验四 学生成绩统计 212
实验五 排名次 214
实验六 大奖赛现场统分 217
习题五 220
第6章 结构体与共用体 226
6.1 问题的提出 226
6.2 结构体类型与结构体变量 228
6.2.1 结构体的声明(Declaration of Structure) 228
6.2.2 定义结构体变量 229
6.2.3 定义指向结构体的指针 232
6.2.4 结构体变量的引用 232
6.2.5 结构体变量的初始化 234
6.3.1 结构体数组的定义 236
6.3 结构体数组 236
6.3.2 结构体数组的应用实例 237
6.3.3 结构体数组与指针 241
6.4 结构体与函数 242
6.5 动态数据结构 245
6.5.1 问题的提出 245
6.5.2 链表的定义 246
6.5.3 链表的特点及操作原理 247
6.5.4 动态链表的建立 248
6.5.5 链表的删除操作 250
6.5.6 链表的插入操作 251
6.6 typedef的使用 253
6.7 共用体(Union) 254
6.8 位段(Bit Field) 256
6.9 枚举常量(Enumeration) 259
6.10 上机实验内容 260
实验一 模拟数字式时钟设计 260
实验二 学生成绩管理与统计 260
实验三 动态建立学生成绩管理程序 261
习题六 261
第7章 关于函数应用的高级话题 265
7.1 递归(Recursive Call) 265
7.1.1 递归问题的提出 265
7.1.2 递归函数 266
7.2 返回指针值的函数(Function Return Pointer) 270
7.3 函数指针(Pointers to Function) 271
7.4 一个综合应用的实例 275
7.5 上机实验内容 283
实验一 Fibonacci数列 283
实验二 求游戏人员的年纪 284
实验三 字母排列组合游戏 284
实验四 函数指针编程练习 286
习题七 286
第8章 文件操作 288
8.1 C文件概述 288
8.2 文件指针 289
8.3 文件的打开和关闭 289
8.4 标准I/O及其重定向 291
8.5 文件的读写 292
8.5.1 按字符读写文件 292
8.5.2 按数据块读写文件 293
8.5.3 按格式读写文件 295
8.6 文件的定位 296
8.7 非缓冲文件系统 298
8.8 上机实验内容 300
实验一 文件内容追加 300
实验二 模拟DOS下的COPY命令 300
实验三 字符文件读写练习 301
实验四 格式文件读写练习 301
实验五 通信录存取 301
习题八 302
第9章 图形和声音的制作 303
9.1 图形模式初始化 303
9.2 一个图形程序实例 305
9.3 一个声音程序实例 315
9.4 上机实验内容 317
实验一 设计一个菜单操作界面 317
实验二 设计一个简易的键盘电子琴 317
习题九 318
附录 319
附录A C语言的关键字 319
附录B 运算符的优先级与结合性 319
附录C 常用字符与ASCII码对照表 320
附录D 常用的ANSI C库函数 321
附录E 常用的Turbo C屏幕窗口和图形函数 325
附录F Turbo C集成环境简介 330
附录G Visual C++集成环境下运行标准C程序的方法 334
参考文献 337