新書推薦:
《
郊庙之外:隋唐国家祭祀与宗教 增订版 (三联·哈佛燕京学术丛书)
》
售價:NT$
480.0
《
小麦文明:“黄金石油”争夺战
》
售價:NT$
445.0
《
悬壶杂记全集:老中医多年临证经验总结(套装3册) 中医医案诊疗思路和处方药应用
》
售價:NT$
614.0
《
无法忍受谎言的人:一个调查记者的三十年
》
售價:NT$
290.0
《
战争社会学专论
》
售價:NT$
540.0
《
剑桥意大利戏剧史(剑桥世界戏剧史译丛)
》
售價:NT$
740.0
《
教育何用:重估教育的价值
》
售價:NT$
299.0
《
理想城市:环境与诗性
》
售價:NT$
390.0
編輯推薦:
《C语言实用编程550例(550集视频教程 源文件)》通过400个实例 150实练题目,讲解C语言核心知识点,培养C语言核心内容的理解与实际应用。 实践、实践再实践!通过足够多的例子教会读者C语言程序设计,再通过足够多的训练题让读者训练自己,由浅入深地掌握程序设计的原理和计算机编程思维逻辑。还提供51小时的配套视频、全部实例的源代码、实练参考代码。另有海量习题在线刷题。本书配套资源丰富,立体化教学,让自学、教学更轻松。
本书适合初学者,可以从零起步,尤其是大一新生,也适合有一定基础并想在ACM、NOI、软考中打好编程基础的同学。本书不仅能教会读者设计C语言程序,更重要的是能帮助读者培养计算机“计算思维”,学会一些常用的程序设计方法(算法),比如枚举、贪心、分治、递归与回溯、查找和排序等,读者还可以从中学到常用的基础数据结构:栈、队列,基础的数据存储:数组、结构、链表等。
內容簡介:
这是一本实例版的 C 语言编程图书,通过编码求解问题的方式来讲解 C 语言的编程知识、数据结构和算法。全书共 15 章,第 1~10 章着重介绍 C 语言的基础知识,包括选择语句、循环控制语句、函数、数组、指针、字符串、结构体、结构体数组与链表、位运算和文件等;第 11~15 章侧重于算法和数据结构基础,包括递归、栈和队列、前缀和与差分、贪心算法、动态规划等。本书包含了 400 个实例和 150 个实练题目,每个实例都有实际的应用背景,通过分析和编码来培养读者的计算机思维和解决实际问题的能力。每个实例实练都配备了相应的视频讲解,以帮助读者解决学习中的疑难问题,加深对所学知识的理解和运用。本书提供代码源文件,便于读者下载练习。另外,本书还提供网站在线刷题,提高读者的编程实战能力。
本书旨在帮助读者系统学习和掌握 C 语言编程的核心知识和应用技巧,无论是计算机相关专业的新生、程序设计竞赛的入门级选手、培训学员、C 语言程序设计的深入理解和提高者,还是 C 语言编程的教师和毕业求职者,本书都将提供有价值的帮助 。
關於作者:
李长荣,齐齐哈尔大学副教授,计算机应用专业硕士研究生,一直在计算机专业从事专业核心课程的教学工作,有20多年的教学经验;主要研究方向为网络安全,教学方面主要研究翻转课堂教学和任务驱动教学方法;多年在教学一线指导学生参加大学生程序设计大赛,具有比较丰富的程序设计的基础算法和常用的解题方法经验。作品:1.《C语言从入门到项目实战》(第3主编),目前销量3万多册; 2.《C 面向对象程序设计实践教程》(第1主编);3.《程序设计基础》和《数据结构与算法》课程有完整的讲课视频。 王一萍,副教授;20多年来从事计算机专业核心课程的教学工作,研究网络安全,群智能算法。出版图书:《C 语言从入门到项目实战》(第1主编)、《C程序设计与项目实践》(第1主编)、《数据结构教程》(第2主编)。
齐峰,从事计算机应用基础课程的教学工作,有多年的教学经验,主要研究网络与信息安全、机会网络,教学主要研究线上线下混合式教学课程设计。
目錄 :
第 1 章 C 语言编程入门 1
视频讲解:110 分钟
【实例 01-01】输出 Hello World! 2
【实例 01-02】输出多行信息 3
【实练 01-01】编程输出直角三角形 3
【实练 01-02】编程输出个人信息 4
【实例 01-03】输出学生个人信息 4
【实例 01-04】计算 1 2 和 3 4 并输出结果 5
【实例 01-05】编程计算并输出(1 8)×2-9÷4 5 的结果 6
【实例 01-06】输出数字的平方和立方 6
【实例 01-07】十进制整数 13 的八进制数和十六进制数 7
【实例 01-08】计算 1.1 2.2 和 3.3 4.4并输出结果 8
【实例 01-09】计算并输出 8 sin30°的结果 9
【实练 01-03】求表达式的值 9
【实例 01-10】IPv6 的地址能分配多久 9
【实练 01-04】求一元二次方程的根10
【实例 01-11】计算两个整数的和 10
【实例 01-12】变量的地址12
【实练 01-05】计算三个整数的平均值13
【实例 01-13】定义整型变量13
【实例 01-14】数据溢出14
【实例 01-15】计算 1 ~ n 的和 15
【实练 01-06】等差数列第 n 项的值15
【实例 01-16】把秒数转换为天、小时、 分钟和秒的方式输出 16
【实例 01-17】3 位整数的逆序数 17
【实练 01-07】4 位正整数的数字平方和 18
【实例 01-18】变量的值自增 1 18
【实例 01-19】交换两个变量的值18
【实例 01-20】统计总学生数19
【实例 01-21】计算圆的面积和周长19
【实例 01-22】计算表达式的值21
【实练 01-08】3 个实数的平均值 21
【实例 01-23】计算多项式的值21
【实例 01-24】输出字符及其 ASCII 值22
【实例 01-25】计算两点的中点23
【实例 01-26】复利本利计算23
【实例 01-27】计算贷款余额24
【实例 01-28】输入一个字符,用该字符输出一个等边三角形25
【实例 01-29】把输入的小写字母转换为大写字母 25
【实例 01-30】将大写字母替换为字母表中后 n 位的字母 26
【实例 01-31】用_Bool 类型判断命题结果 26
【实例 01-32】浮点数相加后取整和取整后相加 27
【实例 01-33】苹果和虫子Ⅰ27
【实例 01-34】复合赋值运算符29
【实例 01-35】逗号运算符和逗号表达式29
小结 30
第 2 章 选择语句 31
视频讲解:156 分钟
【实例 02-01】3 个整数中的最大值和最小值 31
【实例 02-02】计算整数 x 的绝对值 34
【实练 02-01】学生的成绩34
【实练 02-02】偶数34
【实例 02-03】判断一个字符是否为小写字母 35
【实例 02-04】两个整数的排序36
【实练 02-03】整数的奇偶性37
【实练 02-04】苹果和虫子37
【实例 02-05】苹果和虫子Ⅱ37
【实例 02-06】输出两个浮点数中的较大值38
【实练 02-05】整数的绝对值39
【实例 02-07】3 个整数的排序 39
【实练 02-06】4 个整数的排序 39
【实例 02-08】判断闰年40
【实练 02-07】两位正整数40
【实例 02-09】判断某个整数是否与 7 有关 40
【实例 02-10】三角形判断41
【实例 02-11】数字拆分 41
【实例 02-12】谁做了好事42
【实练 02-08】最佳车的车号43
【实例 02-13】有一门课不及格的学生43
【实练 02-09】判断一个给定的点是否在正方形内 44
【实例 02-14】鸡兔同笼44
【实练 02-10】分段函数45
【实例 02-15】摄氏温度与华氏温度的换算 46
【实例 02-16】计算邮资46
【实例 02-17】判断成绩等级48
【实练 02-11】输出星期几对应的英文单词 49
【实例 02-18】判断字符类型49
【实例 02-19】疯狂的“双 11” 50
【实例 02-20】求一元二次方程的根50
【实例 02-21】计算 BMI53
【实例 02-22】月之天数54
【实例 02-23】不多于 5 位的正整数的处理 57
【实练 02-12】不多于 5 位的正整数的处理 58
【实例 02-24】检测输入的字母是否为元音字母 58
【实例 02-25】简单计算器59
【实练 02-13】简单计算器60
【实练 02-14】成绩等级60
小结 60
第 3 章 循环控制语句 61
视频讲解:288 分钟
【实例 03-01】1~n 的整数和 61
【实练 03-01】求区间内整数的和63
【实例 03-02】等差数列的和63
【实练 03-02】求区间内奇数的和64
【实例 03-03】整数 n 的阶乘64
【实练 03-03】x 的 n 次幂 65
【实例 03-04】平均年龄问题65
【实例 03-05】最大跨度值66
【实例 03-06】真因子之和67
【实例 03-07】球弹跳的高度67
【实例 03-08】兔子繁殖问题68
【实例 03-09】猴子吃桃69
【实练 03-04】求年龄70
【实例 03-10】交错序列前 n 项的和70
【实练 03-05】分数序列前 n 项和71
【实例 03-11】特殊 a 串数列的和 71
【实例 03-12】完数72
【实例 03-13】质数72
【实例 03-14】平方根序列求和74
【实练 03-06】求数列的和74
【实例 03-15】求π的近似值75
【实例 03-16】一共来了多少客人76
【实例 03-17】分离正整数77
【实练 03-07】统计非负整数中某个数字出现的次数 79
【实练 03-08】含 k 个 3 的数 79
【实例 03-18】黑洞数79
【实例 03-19】数字反转80
【实练 03-09】判断是否为回文数80
【实例 03-20】统计字符81
【实例 03-21】提取数字82
【实例 03-22】最大公约数83
【实练 03-10】约分最简分式85
【实例 03-23】有理数加法85
【实例 03-24】分解质因子86
【实例 03-25】龟兔赛跑87
【实例 03-26】1~100 之间的质数 88
【实练 03-11】第 n 小的质数 89
【实例 03-27】数字统计89
【实练 03-12】与 7 无关的数的平方和90
【实例 03-28】数字方格90
【实例 03-29】多项式求值92
【实例 03-30】棋盘放粮食93
【实例 03-31】幂级数展开的部分和93
【实例 03-32】输出直角三角形Ⅰ94
【实练 03-13】输出三角形字符阵列95
【实例 03-33】输出直角三角形Ⅱ95
【实练 03-14】输出倒置的直角三角形96
【实例 03-34】输出钻石图形96
【实练 03-15】绘制矩形98
【实练 03-16】输出沙漏形状98
【实例 03-35】金币数98
【实例 03-36】连续因子99
【实例 03-37】不定方程的解 100
【实例 03-38】找零钱问题 101
【实练 03-17】百马百石 103
【实例 03-39】跳水比赛 103
【实练 03-18】比饭量 106
【实练 03-19】谁是嫌疑犯 106
【实例 03-40】水仙花数 106
【实例 03-41】同行列对角线的格 107
【实例 03-42】第几天 108
小结 109
第 4 章 函数 110
视频讲解:192 分钟
【实例 04-01】输出 3 个整数中的最大值 110
【实练 04-01】两数的调和平均数 112
【实练 04-02】检测 x 和 y 是否在闭区间[0, n 1]内 112
【实例 04-02】找出 3 个数的中间数 112
【实例 04-03】计算 m~n 之间所有整数的和 114
【实练 04-03】求整数 n! 114
【实例 04-04】完美立方 114
【实例 04-05】1 的个数115
【实例 04-06】哥德巴赫猜想 116
【实例 04-07】完数统计 117
【实例 04-08】既是质数又是回文数的个数 118
【实练 04-04】输出质数 120
【实练 04-05】寻找质数 120
【实例 04-09】判断是否与 7 无关 120
【实例 04-10】丑数 120
【实例 04-11】x 的算术平方根122
【实例 04-12】输出 n 行数字金字塔 123
【实例 04-13】输出个人名片 124
【实例 04-14】正整数的处理 124
【实例 04-15】月之天数 126
【实练 04-06】第几天 127
【实例 04-16】输出 n 天后的日期 127
【实例 04-17】最大公约数 128
【实练 04-07】最小公倍数 129
【实例 04-18】双亲数 129
【实例 04-19】计算组合数 130
【实例 04-20】统计某个整数中某位数字出现的次数 131
【实例 04-21】计算 sinx 和 cosx 的近似值 132
【实例 04-22】计算 e 值 133
【实例 04-23】四则运算长算式 134
【实例 04-24】一个整数的随机因子 135
【实例 04-25】100 以内四则运算口算自动出题 136
【实练 04-08】掷骰子游戏 139
【实例 04-26】局部变量和全局变量 139
【实例 04-27】局部变量同名时的作用域 140
【实例 04-28】局部变量和全局变量同名时的作用域 141
【实例 04-29】静态局部变量 141
小结 142
第 5 章 数组143
视频讲解:328 分钟
【实例 05-01】与指定数相同的数的个数 143
【实例 05-02】数组内存布局 144
【实例 05-03】整数的统计 146
【实例 05-04】月之天数 146
【实练 05-01】计算天数 147
【实例 05-05】兔子繁殖问题 148
【实练 05-02】母牛的故事 148
【实例 05-06】摘桃子 148
【实例 05-07】大于平均年龄的人 149
【实练 05-03】与平均年龄相差几岁 150
【实例 05-08】数组逆置存放 150
【实例 05-09】向量的点积 151
【实例 05-10】人民币支付 152
【实例 05-11】发工资 152
【实例 05-12】疯狂的“双 11” 154
【实练 05-04】疯狂的“双 11”(升级版) 154
【实例 05-13】逆序对数 154
【实例 05-14】两倍问题 155
【实例 05-15】两数之和 156
【实练 05-05】数组的距离 157
【实例 05-16】进制转换 157
【实例 05-17】校门外的树 158
【实练 05-06】线段覆盖 159
【实例 05-18】开关灯问题 160
【实例 05-19】筛选法找出 1~100 之间的质数 161
【实例 05-20】第 n 小的质数 162
【实练 05-07】质数对猜想 163
【实例 05-21】查找特定的值 163
【实例 05-22】求最小值及其下标 164
【实例 05-23】移动 0164
【实例 05-24】真因子之和 165
【实例 05-25】均值与误差 166
【实练 05-08】青年歌手大奖赛 167
【实例 05-26】装箱问题 167
【实例 05-27】删除元素 169
【实例 05-28】最长平台问题 169
【实例 05-29】有序整数的去重 171
【实例 05-30】移除数组值为特定值的所有元素 172
【实例 05-31】第 k 小的数 173
【实例 05-32】王老师随机点名 173
【实练 05-09】绝对值排序 174
【实练 05-10】最接近的数 175
【实例 05-33】数列有序 175
【实练 05-11】寻找第 k 大的数 176
【实例 05-34】组成最小数 176
【实例 05-35】直方图 177
【实练 05-12】数字统计 177
【实例 05-36】颜色分类 178
【实例 05-37】大于平均年龄 179
【实例 05-38】二维数组在内存中的布局 180
【实例 05-39】矩阵交换行 181
【实练 05-13】矩阵交换列 182
【实例 05-40】计算矩阵边缘元素之和 182
【实练 05-14】主次对角线上的元素之和 183
【实例 05-41】图像模糊处理 183
【实练 05-15】矩阵的加法 185
【实练 05-16】图像相似度 185
【实例 05-42】矩阵的乘法 185
【实例 05-43】杨辉三角 186
【实例 05-44】魔方矩阵 187
【实例 05-45】螺旋矩阵 189
【实练 05-17】矩阵的螺旋(回形)遍历 190
【实例 05-46】蛇形矩阵 190
【实练 05-18】右上左下遍历 191
小结 192
第 6 章 指针193
视频讲解:276 分钟
【实例 06-01】使用指针变量存储整型变量的地址 193
【实练 06-01】指针变量 194
【实例 06-02】使用未初始化的指针变量 195
【实例 06-03】指向无效内存空间的指针 196
【实例 06-04】指针变量所占字节数 196
【实例 06-05】3 个整数的排序197
【实练 06-02】4 个整数的排序198
【实例 06-06】const 与指针变量 198
【实例 06-07】日期转换 200
【实例 06-08】通过指针访问数组 201
【实例 06-09】将数组的元素值逆置后输出 201
【实例 06-10】 *p 、* p 和(*p) 203
【实例 06-11】整数序列的元素最大跨度值 204
【实练 06-03】向量的点积 206
【实例 06-12】与最大数不相同的数的和 206
【实练 06-04】多数元素 207
【实例 06-13】选组长 208
【实例 06-14】出现次数最多的整数 209
【实例 06-15】存在重复元素 210
【实例 06-16】无序整数的去重 211
【实练 06-05】将数组分成和相等的三个部分 212
【实例 06-17】循环右移数组 212
【实练 06-06】循环左移数组 214
【实例 06-18】数组形式的整数加法 214
【实例 06-19】中位数 215
【实例 06-20】集合的并集 217
【实例 06-21】合并两个有序数组 219
【实例 06-22】两个数组非共有的元素 220
【实练 06-07】找出两个数组共有的元素 222
【实例 06-23】数组的相对排序 222
【实练 06-08】出现最多的数字 223
【实例 06-24】void*数据类型 223
【实例 06-25】动态一维数组 224
【实例 06-26】欢乐的跳跃 227
【实例 06-27】随机生成指定长度的字符串 229
【实例 06-28】指针数组 230
【实例 06-29】日历问题 230
【实例 06-30】杨辉三角—不等长的动态二维数组 232
【实例 06-31】二级指针 233
【实例 06-32】矩阵求和 233
【实练 06-09】矩阵的旋转 235
【实例 06-33】通过行指针输出二维数组 235
【实例 06-34】计算鞍点 236
【实练 06-10】最匹配的矩阵 237
【实例 06-35】返回指针的函数 238
【实例 06-36】通过函数指针调用不同的函数 239
【实例 06-37】输入两个运算数,输出四则运算的结果 240
【实例 06-38】qsort 函数与函数指针 241
【实例 06-39】最大间距 242
【实例 06-40】数字黑洞 243
小结 244
第 7 章 字符串 245
视频讲解:376 分钟
【实例 07-01】字符数组与字符串 245
【实例 07-02】标题统计 246
【实练 07-01】基因相关性 247
【实例 07-03】被 3 整除 248
【实例 07-04】信息加密 249
【实练 07-02】信息加密 250
【实例 07-05】信息解密 250
【实例 07-06】加密的病历单 251
【实练 07-03】字符串加密 253
【实例 07-07】统计元音字母 253
【实例 07-08】字符数组和字符串的区别 254
【实例 07-09】统计字符数 255
【实例 07-10】字母重排 255
【实例 07-11】第一个只出现一次的字符 257
【实例 07-12】字符串常量 258
【实例 07-13】连续出现的字符 259
【实例 07-14】字符串 p 型编码 260
【实例 07-15】统计单词 261
【实练 07-04】首字母变大写 262
【实例 07-16】单词的长度 262
【实例 07-17】最长的单词 263
【实例 07-18】特定单词的个数 265
【实练 07-05】比较字符串大小 266
【实例 07-19】单词的翻转 266
【实例 07-20】删除多余的空格 267
【实练 07-06】删除多余的空格(升级版) 268
【实例 07-21】说反话 268
【实例 07-22】单词的排序 269
【实例 07-23】DNA 排序 271
【实例 07-24】替换单词 273
【实例 07-25】念数字 274
【实练 07-07】田径运动会 275
【实例 07-26】电话号码生成英语单词 275
【实练 07-08】478-3279 276
【实例 07-27】回文密码 277
【实例 07-28】验证邮箱 278
【实练 07-09】检查合法 C 标识符 279
【实例 07-29】安全密码 280
【实练 07-10】IP 地址判断 281
【实例 07-30】验证子序列 281
【实例 07-31】验证子串 283
【实例 07-32】字符环 283
【实例 07-33】字符最大跨距 285
【实例 07-34】删除单词后缀 286
【实例 07-35】删除子串 287
【实例 07-36】十进制形式的 IP 地址 288
【实练 07-11】十六进制转十进制 290
【实例 07-37】十六进制形式的 IP 地址 290
【实练 07-12】N 进制转 M 进制 291
【实例 07-38】ISBN 号码 291
【实例 07-39】出书最多的作者 292
【实例 07-40】大整数加法 294
【实练 07-13】大整数减法 296
【实练 07-14】求一个不超过 10000 的整数的阶乘 296
小结 296
第 8 章 结构体、结构体数组与链表 297
视频讲解:280 分钟
【实例 08-01】输出学生信息 297
【实练 08-01】图书的结构体类型 300
【实例 08-02】计算两点间的距离 300
【实练 08-02】三角形面积 301
【实例 08-03】计算矩形的面积 301
【实例 08-04】结构体变量所占字节数 302
【实练 08-03】计算结构体变量所占字节数 303
【实例 08-05】输出 n 天后的日期 303
【实练 08-04】日期的前一天 305
【实例 08-06】结构体中的字符数组和字符指针 305
【实例 08-07】成绩统计 305
【实例 08-08】账户查询 306
【实例 08-09】浮点数格式 308
【实例 08-10】求集合的并集 309
【实练 08-05】集合的交运算和差运算 310
【实例 08-11】按平均成绩排序 310
【实练 08-06】生日相同Ⅰ 312
【实例 08-12】身高排序 313
【实练 08-07】分数线划定 314
【实例 08-13】谁是解题数量最多的学生 314
【实例 08-14】计算与指定数字相同的数的个数(链表) 316
【实例 08-15】删除整数序列中与 x 相等的元素 318
【实例 08-16】按平均成绩排序(链表) 321
【实练 08-08】生日相同Ⅱ 323
【实例 08-17】去重排序 323
【实例 08-18】子串计算 325
【实练 08-09】集合并运算(要求使用链表存储集合) 327
【实例 08-19】相交链表 328
【实例 08-20】删除链表倒数第 n 个节点 331
【实例 08-21】删除有序链表中的重复元素Ⅰ 333
【实例 08-22】删除有序链表中的重复元素Ⅱ 333
【实例 08-23】反转链表Ⅰ 335
【实例 08-24】反转链表Ⅱ 335
【实练 08-10】重排链表中的节点 336
【实例 08-25】分隔链表 337
【实例 08-26】猴子选大王(循环链表) 338
【实例 08-27】环形链表 341
【实例 08-28】序列操作(双向链表) 342
【实例 08-29】使用联合类型存储数据 345
【实例 08-30】位字段 347
小结 348
第 9 章 位运算349
视频讲解:87 分钟
【实例 09-01】判断是奇数还是偶数 349
【实例 09-02】区间位对应的整数Ⅰ 350
【实练 09-01】计算二进制数对应的整数 351
【实例 09-03】将二进制位设置成 1351
【实练 09-02】二进制数置 1352
【实例 09-04】2 的 n 次幂倍352
【实例 09-05】区间位对应的整数Ⅱ 353
【实练 09-03】二进制位整数 353
【实例 09-06】位取反 353
【实练 09-04】取反 355
【实例 09-07】交换两个变量的值 355
【实例 09-08】简单的加密 355
【实例 09-09】只出现一次的整数 356
【实例 09-10】某些位清零 356
【实练 09-05】清零 357
【实例 09-11】将区间位设置成 1357
【实练 09-06】设置为 1357
【实例 09-12】区间位赋值 357
【实例 09-13】1 的个数358
【实例 09-14】2 的整数幂359
【实例 09-15】集合的子集 360
小结 361
第 10 章 文件 362
视频讲解:88 分钟
【实例 10-01】文件的打开与关闭 362
【实练 10-01】打开文件 364
【实例 10-02】从文件中读取单词 364
【实练 10-02】统计字符个数 367
【实例 10-03】复制文件 367
【实练 10-03】写入文本文件 368
【实例 10-04】格式化方式读/写文件 368
【实例 10-05】数据块的读/写 370
【实练 10-04】读/写学生信息 373
【实例 10-06】随机读/写文件 373
【实练 10-05】青年歌手大赛记分程序 375
小结 375
第 11 章 递归 376
视频讲解:237 分钟
【实例 11-01】计算 n! 377
【实练 11-01】丑数 378
【实例 11-02】非负整数位数 378
【实练 11-02】判断偶数 379
【实例 11-03】Ackermann 函数 379
【实练 11-03】计算组合数 380
【实例 11-04】二进制输出整数 380
【实练 11-04】正序输出非负整数 x 的每一位 381
【实练 11-05】计算 a 的 n 次方 381
【实例 11-05】爬楼梯 381
【实例 11-06】青蛙过河 382
【实例 11-07】最大公约数 384
【实例 11-08】选择排序 384
【实练 11-06】冒泡排序 385
【实例 11-09】判断一个单链表是否有序 385
【实例 11-10】反转链表 386
【实例 11-11】从链表中移除节点 386
【实例 11-12】汉诺塔问题 388
【实例 11-13】红与黑 391
【实例 11-14】魔幻二维数组 392
【实例 11-15】分解因子 394
【实练 11-07】整数划分问题 395
【实练 11-08】放苹果 395
【实例 11-16】折半查找 396
【实练 11-09】搜索插入位置 397
【实例 11-17】两数之和 397
【实例 11-18】归并排序 398
【实例 11-19】数组中的逆序对 400
【实练 11-10】统计数字 401
【实例 11-20】快速排序 402
【实例 11-21】排序链表 403
【实练 11-11】使用归并排序对链表进行排序 405
【实例 11-22】分书问题 405
【实例 11-23】n 个整数的全排列407
【实例 11-24】八皇后 408
【实例 11-25】迷宫问题 410
【实练 11-12】红与黑(深度优先搜索算法) 413
【实例 11-26】跳马问题 413
【实练 11-13】集合分解 415
小结 415
第 12 章 栈和队列 417
视频讲解:149 分钟
【实例 12-01】十进制非负整数转换为二进制数输出 417
【实例 12-02】D 进制的 A B 420
【实练 12-01】不多于 5 位的正整数的输出 420
【实例 12-03】删除最外层的括号 420
【实例 12-04】括号匹配 422
【实练 12-02】括号的最大嵌套深度 423
【实练 12-03】删除无效括号 423
【实例 12-05】写出这个数 423
【实例 12-06】回文链表 424
【实例 12-07】说反话 425
【实例 12-08】后缀表达式计算 426
【实例 12-09】棒球比赛 427
【实例 12-10】比较含退格符的字符串 428
【实例 12-11】计算中缀表达式 429
【实例 12-12】小孩报数问题 433
【实例 12-13】银行业务队列简单模拟 435
【实例 12-14】Freda 的队列 437
【实例 12-15】买票需要的时间 438
【实例 12-16】Rabin-Karp 字符串匹配 440
【实例 12-17】机器翻译 441
【实例 12-18】Blah 数集 442
【实例 12-19】滑动窗口 443
【实例 12-20】判断栈和队列 445
小结 446
第 13 章 前缀和与差分 447
视频讲解:91 分钟
【实例 13-01】子数组的和 447
【实例 13-02】和为 k 的子数组个数 448
【实练 13-01】连续自然数的和 449
【实例 13-03】最大子段和 449
【实练 13-02】长度为 k 的子数组的最大和 450
【实例 13-04】字符的个数 450
【实例 13-05】操作后的序列 451
【实练 13-03】种树 452
【实例 13-06】校门外的树 453
【实例 13-07】子矩阵的和 454
【实练 13-04】数星星 455
【实例 13-08】修改后的矩阵 456
【实例 13-09】地毯问题 457
【实练 13-05】区间和的个数 459
小结 459
第 14 章 贪心算法 460
视频讲解:79 分钟
【实例 14-01】分发饼干 460
【实练 14-01】最大总和 462
【实例 14-02】三角形的最大周长 462
【实练 14-02】字符串中的最大奇数 463
【实例 14-03】6 和 9 组成的最大数字464
【实例 14-04】活动安排 465
【实例 14-05】背包问题Ⅰ 467
【实例 14-06】最优分解 469
【实练 14-03】多处最优服务次序问题 470
【实例 14-07】区间覆盖 470
【实例 14-08】删数问题 472
【实练 14-04】最大数 473
【实例 14-09】背包问题Ⅱ 473
【实例 14-10】最优合并问题 474
【实练 14-05】字典序最小问题 476
小结 477
第 15 章 动态规划 478
视频讲解:312 分钟
【实例 15-01】爬楼梯 478
【实例 15-02】数塔问题 479
【实练 15-01】三角形最小路径和 481
【实例 15-03】最少通行费 481
【实例 15-04】最短路径 483
【实例 15-05】不同的路径 485
【实例 15-06】子数组的最大和 486
【实练 15-02】子数组和的绝对值的最大值 487
【实练 15-03】环状子数组的最大和 487
【实例 15-07】拆分乘积最大的整数 487
【实例 15-08】聪明的小王 488
【实例 15-09】最长上升子序列 490
【实练 15-04】求最长不下降序列 491
【实例 15-10】拦截导弹 491
【实练 15-05】登山 493
【实例 15-11】友好城市 493
【实例 15-12】信封套娃 494
【实例 15-13】合唱队形 496
【实例 15-14】挖地雷 497
【实例 15-15】0-1 背包问题 499
【实例 15-16】机器分配 500
【实例 15-17】购物最大优惠 502
【实例 15-18】装箱问题 503
【实例 15-19】完全背包问题 504
【实例 15-20】多重背包问题 505
【实例 15-21】将整数划分成 k 个整数 506
【实练 15-06】放苹果 507
【实练 15-07】划分成若干正整数之和 507
【实练 15-08】划分成若干不超过 k 的正整数之和 508
【实练 15-09】划分成若干不同的正整数之和 508
【实练 15-10】划分成若干奇数之和 508
【实例 15-22】兑换零钱最少 508
【实练 15-11】完全平方数 509
【实例 15-23】兑换零钱方案数问题Ⅰ 509
【实例 15-24】兑换零钱方案数问题Ⅱ 511
【实练 15-12】买书 511
【实例 15-25】将整数拆分成质数 512
【实例 15-26】最长公共子序列 513
【实例 15-27】最长回文子串 514
小结 515
附录 A 运算符的优先级与结合性 516
附录 B 常用字符的 ASCII 码对照表 517
內容試閱 :
C 语言非常强大和灵活,常被作为专业程序员学习编程的入门语言。一旦掌握了 C 语言,学
习其他语言(如 C 、Java 和 C#)将会变得更加轻松,因为这些语言基于 C 语言发展而来。掌
握 C 语言的基础知识将为未来的编程学习奠定坚实的基础。由于 C 语言与底层计算机结构紧密
关联,只要计算机体系结构不发生革命性变革,C 语言就不会被淘汰。C 语言简洁明了,非常适
合描述算法。同时,C 语言贴近硬件,能够开发高效率、高性能的程序。许多重要操作系统和编
程接口都采用 C 语言实现。C 语言的适用领域广泛,涵盖了从底层操作系统内核、各种运行时
库、开发环境与工具、游戏引擎、高性能服务器、嵌入式应用到各种行业应用等。根据编程语言
排行榜,C 语言近二三十年来一直位居前两名。只有真正掌握 C 语言,才能深入理解现代计算机
系统的工作原理;反之亦然。
本书的目的是通过丰富的编程实例,引导读者轻松进入 C 语言程序设计的世界。强调在实践
中学习,并鼓励读者与自己的集成开发环境互动,从而深入理解 C 语言编程。我们希望读者能够
在解决各种问题的过程中,循序渐进地提高编程能力,通过实践获取乐趣和挑战。
对于不同层次的读者,本书提供了适合的编程实例、训练题目及深度理解核心概念的材料,
具有循序渐进、由浅入深的编程学习路径。
对于入门者来说,本书提供了许多实用的编程实例和题目,并通过解题过程逐步提升读者的
编程能力,实现循序渐进式的编程学习。在解决这些问题的过程中,读者能够从实践中获得成就
感和维持编程兴趣,并加深对 C 语言编程的理解。
对于提高者来说,本书介绍了 C 语言的核心概念与解决问题时采用的算法和数据结构。读者
将深入了解问题解决过程中各种关键因素的原理和实现方法,有助于读者深入理解 C 语言编程。
对于求职就业者来说,本书提供了 C 语言编程的全面指南,涵盖了语言基础、编程实例、算
法和数据结构等方面。同时,书中还提供了大量实用的代码案例,供读者参考学习,帮助求职者
掌握 C 语言编程所需的各种技能和能力。
本书注重实例的分类和丰富性,提供了 400 个实例和 150 道实练题目,让读者的学习过程充
满挑战和乐趣。采用通俗易懂的语言,确保每位读者都能够轻松理解。
本书采用实例讲解的方式,着重解释 C 语言的核心知识点。以应用为重点,训练读者的计算
机编程思维。书中的实例和实练都遵循相同的风格。注重选择有趣的实例,其中一些实例存在多
个解决方案,以比较不同方法的特点,并强调算法设计思维和效率分析。此外,书中还融入了常
用的算法设计方法,如枚举、递推、减治、分治、回溯、动态规划、贪心算法等。总之,通过实
际应用和丰富的实例,帮助读者全面理解 C 语言的核心概念,并培养编程思维能力。
本书章节介绍
第 1 章 C 语言编程入门。共包含 35 个实例,主要涵盖了 C 语言的基本数据类型、常量和
变量的概念、输入/输出方法、数学函数的使用、运算符的分类,以及表达式和语句的概念等基础
知识。通过学习本章的实例,读者可以快速入门 C 语言编程,并掌握基本的编程技巧。
第 2 章 选择语句。共包含 25 个实例,详细介绍了 C 语言中的选择控制语句,包括单分支
if 语句、双分支 if 语句、多分支 if 语句和 switch 语句等。通过学习本章的实例,读者可以学会根
据问题的需求选择合适的选择语句,并掌握选择语句的嵌套使用,解决更加复杂的问题。
第 3 章 循环控制语句。共包含 42 个实例,重点介绍了 C 语言中的三种循环语句:for、while
和 do…while。通过学习本章的实例,读者能够全面掌握循环语句的使用方法,并理解循环语句之
间的相互替代关系及循环嵌套等高级概念。在实践中逐步提升自己在计算机编程方面的能力,并体
验到计算机高效解决问题的潜力。
第 4 章 函数。共包含 29 个实例,主要介绍了函数的声明、定义和调用。通过将代码组织
为函数,可以将程序分解为更小、更易于理解和维护的模块。使用函数来组织代码不仅增强了程
序的可读性,还使得代码更加清晰、易于维护。通过学习本章的实例,可以帮助读者掌握自定义
函数的方法和模块化程序设计思想。
第 5 章 数组。共包含 46 个实例,主要介绍了一维数组和二维数组的定义、初始化和访问
等基本操作。通过学习本章的实例,读者将能够熟练运用一维数组和二维数组来存储和操作数据,
并能够根据具体问题的需求选择合适的算法和处理方式,实现代码的高效和可靠运行。无论是初
学者还是进阶者,本章的内容都能够为读者在程序设计中的学习和实践提供重要的指导。
第 6 章 指针。共包含 40 个实例,主要介绍了指针的定义、用途、与数组的关系、与函数
的关系,以及动态内存分配等方面的内容。掌握指针是掌握 C 语言的重要一步,它可以让我们直
接操作内存,提高程序的效率和灵活性。通过学习本章的实例,读者将全面掌握指针在 C 语言中
的使用方法,并能够熟练运用指针来编写高效和可靠的程序,以及灵活应用指针来解决实际问题。
第 7 章 字符串。共包含 40 个实例,着重介绍了 C 语言中字符串相关的基础知识和常见操
作。C 语言提供了字符串处理函数库 string.h,常用于进行字符串处理操作。通过学习本章的实
例,将帮助读者在 C 语言编程中更加熟练地处理字符串,为解决实际问题提供强大的工具和技
巧。无论是初学者还是进阶者,都能从本章的内容中获得丰富的字符串处理经验。
第 8 章 结构体、结构体数组与链表。共包含 30 个实例,着重介绍了结构体数组和链表在
编程中的应用。本章的实例将深入讲解如何构建复杂的数据存储结构,如何综合运用结构体、数
组和指针等知识,以及如何使用结构体数组和链表方便地组织和存储数据。无论是初学者还是进
阶者,都可以通过本章的学习获得丰富的实践经验,为解决实际问题提供有力的支持。
第 9 章 位运算。共包含 15 个实例,介绍了位运算符的使用,包括位与、位或、位异或、
位取反、位左移和位右移等。位运算是一种高效的运算方式,通过学习这些实例,读者可以理解
位运算的概念和应用场景。
第 10 章 文件。共包含 6 个实例,介绍了文件读/写函数的选择原则和使用方法。通过这些
实例的学习,读者可以灵活地进行文件操作,并根据需要选择适合的读/写函数。
第 11 章 递归。共包含 26 个实例,主要讲解了如何使用递归思想解决问题的算法,采用不
同的策略应对不同类型的问题。常用策略包括减治策略、分治策略、回溯策略和深度优先搜索策
略。通过学习本章的实例,能够培养读者的递归思维,以便更好地应用递归算法解决问题。
第 12 章 栈和队列。共包含 20 个实例,重点介绍了栈和队列在问题求解中的应用。通过学
习本章的实例,读者将掌握栈和队列在程序设计中的应用技巧,为解决实际问题提供强大的工具
和技巧。对于编写算法和处理复杂数据结构的程序设计人员而言,了解和掌握栈和队列的运用都
是至关重要的。
第 13 章 前缀和与差分。共包含 9 个实例,重点介绍了前缀和与差分在程序设计中的应用。
通过学习本章的实例,读者将深入了解前缀和与差分的应用,并掌握如何巧妙地利用它们解决实
际问题。这些技巧能够有效降低对某个区间进行频繁操作时的查询时间复杂度,简化问题的求解
过程。
第 14 章 贪心算法。共包含 10 个实例,主要介绍了使用贪心算法解决最优化问题的方法。
贪心算法的核心思想是每一步选择当前最优的策略,以达到全局最优解。通过学习本章的实例,
读者将深入理解贪心算法的原理和应用。
第 15 章 动态规划。共包含 27 个实例,主要介绍了递推、最长上升子序列、背包问题等几
类问题的解决方法。通过学习本章的实例,读者将掌握动态规划的基本思想和解决问题的方法。
动态规划在算法竞赛和实际开发中都是一种强大的工具,能够高效地解决各种复杂的优化问题,
对算法设计和解决实际问题都具有重要的帮助。
本书资源与服务
本书配有丰富的配套资源,包括全书实例实练的讲解视频、全部实例的源代码、全部实练的
参考代码以及选择填空等客观在线练习题等,以帮助读者更好地学习和实践 C 语言编程。讲解视
频请使用手机扫描书中的二维码进行观看,图书资源请扫描以下二维码获取下载链接。
作者在写作过程中虽力求严谨细致,但由于时间与精力有限,书中疏漏之处在所难免。如果
读者在阅读过程中有任何疑问,也请扫描下面的二维码,与我们取得联系。读者也可在群内交流,
共同学习。
致谢
本书由李长荣统稿,李长荣、齐峰和王一萍共同编著,其中李长荣编写了第 1、2、6、8、
12 章,齐峰编写了第 4、9、10、11、14 章,王一萍编写了第 3、5、7、13、15 章。其他编写
人员还有于宝泉、李延春、于子涵、李瑾,在此对他们的付出一并表示感谢!
由于编者水平有限,书中难免存在疏漏和不当之处,敬请广大读者批评指正。
我们希望这本书能够满足您的期待,并帮助您在 C 语言编程的学习和实践中取得成功。无论
您是计算机相关专业的新生、程序设计竞赛的入门级选手、培训学员、C 语言程序设计的深入理
解和提高者,还是 C 语言编程的教师和毕业求职者,本书都将为您提供有价值的帮助。
感谢您对本书的支持!祝愿您在 C 语言编程的学习之旅中收获满满,实现自己的编程梦想。
编 者
2024 年 5 月