程序设计基础(C语言)(慕课版)

国家精品课程配套教材,工信部十四五规划教材,配套丰富资源
分享 推荐 6 收藏 111 阅读 10.2K
苏小红 (作者) 978-7-115-60083-7

关于本书的内容有任何问题,请联系 刘博

1.国家级线上一流课程“程序设计基础”配套教材、工业和信息化部十四五规划教材。
2.包含课程思政内容,从学生职业素养养成、中华优秀传统文化,时政新闻和热点事件,以及身边日常生活等多个维度多个视角挖掘思政元素,为教材内容注入思政灵魂。
3. 案例趣味性强。通过飞机大战、迷宫游戏、循环报数等兼具趣味性和实用性的阶梯化的实例,达到举一反三、融会贯通的目的,力图用最简明的语言、最典型的实例、最通俗的解释以及最丰富的图示,将程序设计中的趣味性和哲理性挖掘出来,带给读者全新的学习体验。
4. 在内容写作上适合初学者。每章开头都有内容导读,将内容分解为必学内容、进阶内容和选学内容,对读者学习和教师授课提供参考,每章结尾以思维导图的形式对本章内容以及内容之间的关系进行总结和梳理,每章结尾还给出了学习指南。

内容摘要

全书内容分为计算机ABC、程序设计的方法学基础、程序设计的问题求解基础,以及程序设计的算法和数据结构基础四部分,共13章。其中,程序设计的方法学基础包括基本输入和输出、基本运算、基本控制结构,以及程序设计的基本方法等四章内容,程序设计的算法和数据结构基础包括用一般线性表保存数据、排序查找算法、数据的间接寻址、文本数据的保存与处理、用抽象数据类型封装数据、结构设计的艺术,以及用文件保存数据等七章内容。

诚邀您加入【人邮社C语言程序设计教师交流群】

目录

第1章 程序设计的计算机基础
1.1 计算的“自动化”梦想 1
1.2 计算的“无止尽”现实 3
1.3 计算的“再塑造”未来 4
1.4 编程不只是“coding” 4
1.5 什么是“编程” 5
1.6 怎么学“编程” 7
扩展阅读1 “我”的故事 7
扩展阅读2 “我”和“我”的舞台 8
习题1 9
第 2 章 程序设计方法基础——基本 I/O 和基本数据类型 10
2.1 初识C语言,从“Hello world!”开始 10
2.2 常量和变量 12
2.2.1 变量的类型和变量的定义 12
2.2.2 最佳编码原则:标识符的命名规范和程序注释 14
2.2.3 常量的表示形式 15
2.2.4 最佳编码原则:使用宏常量和const常量 17
2.3 变量的类型决定了什么 18
2.4 键盘输入和屏幕输出 24
2.4.1 单个字符的输入输出 25
2.4.2 数据的格式化屏幕输出 26
2.4.3 数据的格式化键盘输入 28
2.5 本章知识树 31
习题2 32
第 3 章 程序设计方法基础——基本运算 33
3.1 算术运算——最基本的数学运算 33
3.2 赋值运算——用变量保存计算结果 36
3.3 增1和减1运算——最快捷常用的运算 37
3.4 混合数据类型运算中的类型转换 38
3.4.1 自动类型转换与类型提升 38
3.4.2 “呼风唤雨”的强制类型转换 39
3.4.3 自动类型转换的安全隐患 40
3.5 位运算及其应用 45
3.6 本章知识树 47
习题3 47
第 4 章 程序设计方法基础——基本控制结构 49
4.1 算法的概念与算法的描述方法 49
4.1.1 算法的概念 49
4.1.2 算法的描述方法 50
4.2 计算机的问题求解 51
4.3 顺序结构 51
4.4 选择结构 53
4.4.1 选择结构的基本形式——变是唯一的不变 53
4.4.2 条件语句——无处不在的抉择 54
4.4.3 开关语句——条条道路通罗马 60
4.4.4 最佳编码原则:正确使用关系和逻辑运算符 64
4.5 循环结构——周而复始的循环之道 66
4.5.1 循环的控制方式 66
4.5.2 计数控制的循环 67
4.5.3 条件控制的循环 74
4.5.4 最佳编码原则:结构化程序设计 78
4.6 本章知识树 84
习题4 84
第 5 章 程序设计方法基础——结构化与模块化 86
5.1 结构化程序设计——像搭积木一样写代码 86
5.1.1 自底向上的程序设计方法 86
5.1.2 自顶向下、逐步求精的结构化程序设计方法 92
5.2 模块化程序设计——分工与合作的艺术 94
5.2.1 模块分解的基本原则 95
5.2.2 如“活字印刷”般的函数 100
5.2.3 函数调用和参数传递 103
5.2.4 最佳编码原则——防御式编程 110
5.2.5 多文件编程 116
5.2.6 最佳编码原则——正确运用变量的作用域和存储类型 122
5.3 程序测试方法 129
5.3.1 程序测试的目的 129
5.3.2 测试方法和测试用例 130
5.3.3 错误实例分析 131
5.4 程序调试方法 136
5.4.1 常用的程序调试与排错方法 136
5.4.2 错误实例分析 139
5.5 最佳编码原则——代码规范 142
5.6 本章知识树 143
习题5 143
第 6 章 程序设计的问题求解基础 145
6.1 问题求解策略 145
6.2 枚举——从找回你的密码谈起 145
6.3 递推——荷花定律和大自然中的秘密 158
6.3.1 正向顺推实例 159
6.3.2 反向逆推实例 161
6.4 递归——“千里之行,始于足下”的启示 163
6.4.1 递归的内涵与数学基础 163
6.4.2 递归算法的基本要素 164
6.4.3 递归的执行过程 166
6.4.4 递归与迭代的关系 169
6.5 本章知识树 178
习题6 178
第 7 章 算法和数据结构基础——用数组保存数据 181
7.1 数组的定义、引用和初始化 181
7.2 向函数传递批量数据 186
7.2.1 按值传递与模拟按引用传递 186
7.2.2 一维数组的参数传递——以筛法求素数为例 187
7.2.3 二维数组的参数传递——以杨辉三角为例 189
7.3 数组下标越界错误案例分析 192
7.3.1 一维数组的下标越界实例分析 192
7.3.2 二维数组的下标越界实例分析 193
7.4 安全编码规范 195
7.5 本章知识树 195
习题7 196
第 8 章 算法和数据结构基础 ——查找和排序算法 198
8.1 线性查找算法——众里寻他千百度 198
8.1.1 线性查找算法的基本原理 199
8.1.2 线性查找算法的程序实现 199
8.2 二分查找算法——猜数游戏中的智慧 201
8.2.1 二分查找算法的基本原理 201
8.2.2 二分查找算法的递归和迭代实现 202
8.2.3 二分查找算法的实际应用 204
8.3 求最值算法 205
8.4 排序算法——如影随形的“顺序” 208
8.4.1 交换排序算法 209
8.4.2 选择排序算法 212
8.4.3 冒泡排序算法 213
8.5 本章知识树 216
习题8 216
第 9 章 算法和数据结构基础——“呼风唤雨”的指针 218
9.1 指针——C语言世界中的如意金箍棒 218
9.1.1 变量的寻址方式 219
9.1.2 指针变量的定义、初始化及其解引用 219
9.2 指针变量与模拟按引用传参 222
9.3 函数指针及其应用 227
9.3.1 函数指针的概念 227
9.3.2 函数指针的应用 230
9.4 指针及其孪生兄弟 232
9.4.1 指针上的游走 232
9.4.2 指针和一维数组的前世之缘 235
9.5 文件指针和数据的格式化文件读写 239
9.6 安全编码规范 249
9.7 本章知识树 250
习题9 251
第 10 章 算法和数据结构基础——字符串和文本处理 252
10.1 字符串的存储、表示与处理 252
10.1.1 字符串的存储与表示 252
10.1.2 字符串的输入和输出 255
10.1.3 字符串处理函数 261
10.2 字符串的应用——编程带你去看“诗和远方” 264
10.2.1 向函数传递字符串——从微情书到回文诗和回文对联 264
10.2.2 从函数返回字符串——破解藏头诗 268
10.2.3 错误案例分析 270
10.3 指针数组及其应用 273
10.3.1 指针和二维数组间的关系——以扑克牌为例 273
10.3.2 字符指针数组和二维字符数组 277
10.3.3 错误案例分析 282
10.4 文本文件的读写及应用 286
10.4.1 读写文件中的字符 286
10.4.2 读写文件中的字符串 288
10.5 安全编码规范 290
10.6 本章知识树 297
习题10 297
第 11 章 算法和数据结构基础 ——用结构封装数据 300
11.1 结构体类型及其应用——变形金刚之组合金刚 300
11.1.1 结构体类型的声明和结构体变量的定义 301
11.1.2 结构体成员的初始化和访问 305
11.1.3 结构体与数组的嵌套 307
11.1.4 结构体占内存的字节数 308
11.1.5 结构体的相关计算和操作 310
11.2 用结构体封装函数参数 311
11.2.1 在函数之间传递结构体数据 312
11.2.2 结构体应用实例1:奥运奖牌排行榜 315
11.2.3 结构体应用实例2:一万小时定律 323
11.2.4 结构体应用实例3:洗发牌模拟 325
11.3 共用体类型和枚举类型 327
11.3.1 共用体类型及其应用 327
11.3.2 枚举类型及其应用 331
11.4 安全编码规范 332
11.5 本章知识树 333
习题11 333
第 12 章 算法和数据结构基础——结构设计之美 335
12.1 从定长数组到动态数组 335
12.1.1 动态内存分配 335
12.1.2 动态数组实例——随机点名 337
12.2 从静态数据结构到动态数据结构 341
12.2.1 线性表的链式存储 341
12.2.2 单向链表的基本操作 342
12.2.3 单向循环链表应用实例——循环报数问题 348
12.3 限定性线性表之栈和队列 354
12.3.1 栈的应用实例——再谈回文诗 354
12.3.2 队列的应用实例——再谈循环报数问题 359
12.4 树和图等非线性数据结构 366
12.4.1 树的概念和应用 366
12.4.2 图的概念和应用 369
12.5 安全编码规范 370
12.6 本章知识树 373
习题12 373
附录A C语言中的关键字 375
附录B GCC中数据类型占内存的字节数和表数范围 376
附录C 运算符的优先级与结合性 377
附录D 常用字符的ASCII码对照表 378
附录E 二进制补码的计算方法 379
附录F 输入输出格式转换说明 381
附录G 常用的ANSI C标准库函数 384
参考文献 395

读者评论

赶紧抢沙发哦!

我要评论

作者介绍

苏小红 哈尔滨工业大学计算机学院教授,博士生导师,中国计算机学会高级会员,哈尔滨工业大学计算机科学与技术国家级实验教学示范中心副主任,航天软件工程研究中心主任,计算机语言基础教研室主任。 出版过十二五国家规划教材《C语言程序设计》等多部著作。

推荐用户

相关图书

人邮微信
本地服务
教师服务
教师服务
读者服务
读者服务
返回顶部
返回顶部