基础篇 3
第1章 编程中必备的基础知识 3
1.1 编程语言 3
1.2 计算机基础知识 4
1.2.1 计算机的工作过程 4
1.2.2 计算机系统的组成 5
1.2.3 存储器 6
1.3 数制及其转换与数值型数据的存储表示 7
1.3.1 数制进位中的基本概念 7
1.3.2 数制之间的转换 8
1.3.3 二进制数的运算 11
1.3.4 数据在计算机内部的存储形式 12
1.4 算法 13
1.4.1 算法描述方法 14
1.4.2 算法特性 15
习题1 15
第2章 从认识C语言开始 18
2.1 从显示“Hello World!”开始 18
2.2 常量 19
2.2.1 整型常量 19
2.2.2 实型常量 20
2.2.3 字符型常量 20
2.2.4 字符串常量 21
2.3 常用的运算符 21
2.3.1 算术运算符与算术表达式 21
2.3.2 关系运算符与关系表达式 21
2.3.3 逻辑运算符和逻辑表达式 22
2.3.4 条件运算符和条件表达式 23
2.3.5 赋值运算符及赋值表达式 24
2.3.6 逗号运算符及逗号表达式 25
2.3.7 自增、自减运算符 26
2.4 综合运算 27
2.4.1 运算符之间的优先级 27
2.4.2 综合运算实例 27
习题2 28
第3章 数据类型及变量 31
3.1 数据类型 31
3.2 变量 32
3.2.1 标识符 32
3.2.2 对变量的理解 33
3.2.3 定义变量 34
3.2.4 变量的初始化 34
习题3 34
第4章 数据的输入与输出 37
4.1 格式化输入输出 37
4.1.1 printf函数 37
4.1.2 scanf函数 42
4.2 字符输入输出函数 46
4.2.1 putchar函数 47
4.2.2 getchar函数 48
习题4 49
流程控制篇 55
第5章 选择控制语句 55
5.1 案例一 温度转换 55
5.1.1 案例描述及分析 55
5.1.2 单分支if语句 56
5.1.3 程序实现 57
5.1.4 双重分支if…else语句 58
5.2 案例二 计算股票经纪人的佣金 59
5.2.1 案例描述及分析 59
5.2.2 多分支结构 60
5.2.3 程序实现 61
5.3 案例三 判定成绩等级 62
5.3.1 案例描述及分析 62
5.3.2 switch语句 63
5.3.3 程序实现 64
习题5 65
第6章 循环控制语句 70
6.1 案例一 猴子吃桃 70
6.1.1 案例描述及分析 70
6.1.2 while语句 71
6.1.3 程序实现 72
6.1.4 do…while语句 74
6.2 案例二 判定素数 74
6.2.1 案例描述及分析 74
6.2.2 for语句 75
6.2.3 程序实现 79
6.3 案例三 由星组成的倒三角 80
6.3.1 案例描述及分析 80
6.3.2 循环的嵌套 81
6.3.3 程序实现 83
6.4 案例四 猜数游戏 84
6.4.1 案例描述及分析 84
6.4.2 break语句 85
6.4.3 continue语句 87
6.4.4 具体实现 88
习题6 90
第7章 模块化函数 94
7.1 案例一 简单计算器 94
7.1.1 案例描述及分析 94
7.1.2 函数概述 95
7.1.3 函数的定义 97
7.1.4 函数的参数和函数的值 98
7.1.5 函数的调用 100
7.1.6 程序实现 102
7.2 案例二 数值交换的“赝品” 105
7.2.1 案例描述及分析 105
7.2.2 函数间的参数传递 105
7.2.3 变量的作用域 106
7.2.4 程序实现 109
7.3 案例三 求阶乘 111
7.3.1 案例描述及分析 111
7.3.2 函数的嵌套调用 112
7.3.3 函数的递归调用 112
7.3.4 程序实现 113
习题7 115
数据操作篇 121
第8章 数组的妙用 121
8.1 案例一 找最大 121
8.1.1 案例描述及分析 121
8.1.2 一维数组的定义 122
8.1.3 一维数组的初始化 123
8.1.4 数组元素的引用 124
8.1.5 程序实现 125
8.2 案例二 排序 126
8.2.1 案例描述及分析 126
8.2.2 冒泡法排序 126
8.2.3 选择法排序 129
8.3 案例三 魔方阵 131
8.3.1 案例描述及分析 131
8.3.2 二维数组的定义 131
8.3.3 二维数组的初始化 133
8.3.4 二维数组的引用 134
8.3.5 程序实现 134
8.4 案例四 链对计数器 136
8.4.1 案例分析及描述 136
8.4.2 程序实现 137
8.5 案例五 赛马 138
8.5.1 案例描述及分析 138
8.5.2 数组元素作函数的实参 138
8.5.3 程序实现 138
习题8 140
第9章 指针的灵活运用 144
9.1 案例一 数值交换的“真品” 144
9.1.1 案例描述及其分析 144
9.1.2 地址、指针和指针变量 144
9.1.3 指针变量的定义与赋值 146
9.1.4 指针变量作为函数参数 150
9.1.5 程序实现 150
9.2 案例二 猴子选大王 152
9.2.1 案例描述及分析 152
9.2.2 指针变量与一维数组 152
9.2.3 程序实现 154
9.3 案例三 一维数组中的“大在前小在后” 155
9.3.1 案例描述及分析 155
9.3.2 数组元素的地址作为函数实参 156
9.3.3 数组名作为函数参数 156
9.3.4 程序实现 157
9.4 案例四 二维数组中的“大在前小在后” 159
9.4.1 案例描述及分析 159
9.4.2 二维数组元素的地址 159
9.4.3 用二维数组名作函数的参数 161
9.4.4 程序实现 162
9.5 案例五 一组数据的累加、累乘计算 165
9.5.1 案例描述及分析 165
9.5.2 返回指针的函数 165
9.5.3 指向函数的指针变量 166
9.5.4 程序实现 168
习题9 169
第10章 字符串的处理 173
10.1 案例一 存储“Hello World!” 173
10.1.1 案例描述及分析 173
10.1.2 用字符数组存放字符串 173
10.1.3 指针变量指向一个字符串 175
10.1.4 字符串的输入和输出 176
10.1.5 程序实现 178
10.2 案例二 单词计数器 178
10.2.1 案例描述及分析 178
10.2.2 字符串的输入函数gets和输出函数puts 179
10.2.3 用指针变量处理字符串 180
10.2.4 程序实现 181
10.3 案例三 单词排序 182
10.3.1 案例描述及分析 182
10.3.2 指针数组的定义与使用 182
10.3.3 字符串作函数参数 184
10.3.4 程序实现 185
习题10 187
第11章 结构体的构造 190
11.1 案例一 建立学生信息库 190
11.1.1 案例描述及分析 190
11.1.2 结构体类型的定义 191
11.1.3 结构体变量的定义及初始化 191
11.1.4 引用结构体变量中的成员 193
11.1.5 结构体数组的定义与初始化 194
11.1.6 程序实现 195
11.2 案例二 按学生成绩排序 197
11.2.1 案例描述及分析 197
11.2.2 指向结构体类型的指针变量 198
11.2.3 指针变量引用结构体中的成员 198
11.2.4 程序实现 199
11.3 案例三 统计候选人票数 201
11.3.1 案例描述及分析 201
11.3.2 用结构体类型的数据作函数参数 202
11.3.3 程序实现 204
11.4 案例四 创建链表 206
11.4.1 案例描述及分析 206
11.4.2 利用结构体变量构成链表 206
11.4.3 动态存储分配 207
11.4.4 程序实现 208
习题11 211
高级应用篇 219
第12章 常用的库函数 219
12.1 案例一 多功能计算器的制作 219
12.1.1 案例描述及分析 219
12.1.2 数学计算math.h 220
12.1.3 程序实现 223
12.2 案例二 显示提醒列表 224
12.2.1 案例描述及分析 224
12.2.2 字符串处理函数 225
12.2.3 程序实现 227
12.3 案例三 数值转换 230
12.3.1 案例描述及分析 230
12.3.2 通用的实用工具函数 230
12.3.3 程序实现 231
习题12 233
第13章 文件 236
13.1 案例一 建立一个存储学生基本信息的文件 236
13.1.1 案例描述及分析 236
13.1.2 创建新文件 236
13.1.3 程序实现 240
13.2 案例二 文件复制 242
13.2.1 案例描述及分析 242
13.2.2 文件的其他常用读写函数 242
13.2.3 程序实现 244
习题13 245
第14章 综合案例——贪吃蛇游戏 248
14.1 案例描述及分析 248
14.2 程序设计 248
14.3 代码实现 249
附录A 常用字符与ASCII代码对照表 256
附录B C语言关键字及其用途 257
附录C 运算符的优先级和结合性 258
附录D C语言标准库函数 259
附录E 课后习题参考答案 265
参考文献 284