新書推薦:

《
低空经济蓝皮书:低空经济发展报告(2025)
》
售價:HK$
1010

《
蛛网资本主义:全球精英如何从新兴市场攫取利益(理想国译丛074)
》
售價:HK$
500

《
跨越学习曲线:成就非凡的行动指南
》
售價:HK$
301

《
财富的秘密:一部瑞士经济发展史
》
售價:HK$
245

《
猎头游戏(尤·奈斯博邪恶又疯狂的独立作 当昆汀遇上科恩兄弟 改编电影创造挪威票房奇迹)
》
售價:HK$
254

《
全彩速学低压电气电路
》
售價:HK$
347

《
布衣壶宗:顾景舟传 一位天匠,一把壶,一生清景,一代宗师。致敬顾景舟诞辰110周年 顾景舟WEI一正
》
售價:HK$
551

《
非虚构写作课:每个人物都栩栩如生
》
售價:HK$
250
|
| 編輯推薦: |
1)教材内容取材新颖,聚焦程序设计的基础知识和核心问题,案例紧密结合实践。
2)在教材中融入新颖的思政元素。
3)引入AI辅助编程内容。
4)教辅资料完备,提供了全方位多元化的教学资源。
|
| 內容簡介: |
本书是国家精品在线开放课程、国家级一流本科课程、华为“智能基座”精品慕课“C语言程序设计精髓”的配套教材。全书由12章组成,包括4个模块:程序设计的计算机基础(第1章)、程序设计方法基础(第2~5章)、程序设计的问题求解基础(第6章)、算法和数据结构基础(第7~12章)。其中,程序设计方法基础涵盖了4章内容,包括基本I/O和基本数据类型、基本运算、基本控制结构、结构化与模块化。算法和数据结构基础涵盖了6章内容,包括用数组保存数据、查找和排序算法、指针、字符串和文本处理、用结构封装数据、结构设计之美。
本书以快乐为本、实用为根,试图以现代视角解读C语言,通过阶梯化的实例,达到让读者举一反三、融会贯通的目的,力图用最简明的语言、最典型的实例、最通俗的解释及最丰富的图示,将程序设计的趣味性和哲理性挖掘出来,带给读者全新的学习体验。此外,本书还为任课教师免费提供多媒体课件、例题和习题源代码,以及程序设计远程在线考试平台和实验等教学资源。
本书可作为高等学校计算机相关专业程序设计课程教材,也可供从事计算机相关工作的科技人员及各类自学人员参考。
|
| 關於作者: |
苏小红,哈尔滨工业大学计算学部教授、智能软件工程研究中心主任,博士生导师,黑龙江省教学名师,中国计算机学会(CCF)高级会员。曾获-华为“智能基座”优秀教师奖励计划、霍英东教育基金会高等院校教育教学奖、宝钢优秀教师奖、高校计算机专业优秀教师奖励计划、全国高等院校计算机基础教育研究会计算机基础教育优秀教师、中国大学MOOC“杰出贡献奖”、全省优秀教师、省师德先进个人等荣誉。
主持的C语言程序设计课程先后获评国家精品在线开放课程、国家级一流本科课程、华为“智能基座”优秀在线课程,主持的计算机图形学课程获黑龙江省研究生课程思政高质量建设项目立项。获国家级教学成果奖一、二等奖各1项,省级教学成果一等奖6项。主编教材10余部,其中4部国家十二五规划教材累计发行100余万册。
研究方向为智能软件工程,包括软件漏洞检测与定位,软件仓库挖掘,软件智能化测试,API序列推荐和代码生成等,主持完成国家自然科学基金项目4项,目前在研国家自然科学基金面上基金项目 1 项,发表学术论文200余篇,拥有国家授权发明专利22项。
|
| 目錄:
|
目录
第1章 程序设计的计算机基础 1
1.1 计算的“自动化”梦想 1
1.2 计算的“无止境”现实 3
1.3 计算的“再塑造”未来 4
1.4 编程不只是“coding” 4
1.5 什么是“编程” 5
1.6 怎么学“编程” 7
1.7 扩展阅读1 “我”的故事 7
1.8 扩展阅读2 “我”和“我”的舞台 8
1.9 扩展阅读3 AI辅助编程 9
习题1 11
第2章 程序设计方法学基础——基本I/O和基本数据类型 12
2.1 初识C语言,从“Hello world!”开始 12
2.2 常量和变量 14
2.2.1 变量的类型和变量的定义 14
2.2.2 最佳编码原则:标识符的命名规则和程序注释 16
2.2.3 常量的表示形式 17
2.2.4 最佳编码原则:使用宏常量和const常量 19
2.3 变量的类型决定了什么 20
2.4 键盘输入和屏幕输出 26
2.4.1 单个字符的输入输出 27
2.4.2 数据的格式化屏幕输出 28
2.4.3 数据的格式化键盘输入 30
2.5 本章思维导图 33
习题2 34
第3章 程序设计方法学基础——基本运算 35
3.1 算术运算——最基本的数学运算 35
3.2 赋值运算——用变量保存计算结果 37
3.3 增1和减1运算——最快捷常用的运算 39
3.4 混合数据类型运算中的类型转换 40
3.4.1 自动类型转换与类型提升 40
3.4.2 “呼风唤雨”的强制类型转换 41
3.4.3 自动类型转换的安全隐患 42
3.5 本章思维导图 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 开关语句——条条道路通罗马 59
4.4.4 最佳编码原则:正确使用关系和逻辑运算符 63
4.5 循环结构——周而复始的循环之道 65
4.5.1 循环的控制方式 65
4.5.2 计数控制的循环 66
4.5.3 条件控制的循环 73
4.5.4 最佳编码原则:结构化程序设计 77
4.6 本章思维导图 82
习题4 82
第5章 程序设计方法学基础——结构化与模块化 84
5.1 结构化程序设计——像搭积木一样写代码 84
5.1.1 自底向上的程序设计方法 84
5.1.2 自顶向下、逐步求精的结构化程序设计方法 90
5.2 模块化程序设计——分工与合作的艺术 92
5.2.1 模块分解的基本原则 92
5.2.2 如“活字印刷”般的函数 97
5.2.3 函数调用和参数传递 100
5.2.4 最佳编码原则:防御式编程 106
5.2.5 多文件编程 112
5.2.6 最佳编码原则:正确运用变量的作用域和存储类型 118
5.3 程序测试方法 125
5.3.1 程序测试的目的 125
5.3.2 测试方法和测试用例 125
5.3.3 错误实例分析 126
5.4 程序调试方法 130
5.4.1 常用的程序调试与排错方法 130
5.4.2 错误实例分析 133
5.5 扩展阅读 最佳编码原则:代码规范 136
5.6 本章思维导图 137
习题5 137
第6章 程序设计的问题求解基础 139
6.1 问题求解策略 139
6.2 枚举——从找回你的密码谈起 139
6.3 递推——荷花定律和大自然中的秘密 149
6.3.1 正向顺推实例 150
6.3.2 反向逆推实例 152
6.4 递归——“千里之行,始于足下”的启示 154
6.4.1 递归的内涵与数学基础 154
6.4.2 递归算法的基本要素 155
6.4.3 递归的执行过程 157
6.4.4 递归与迭代的关系 159
6.5 扩展阅读 尾递归 166
6.6 AI辅助编程实例 168
6.7 本章思维导图 170
习题6 171
第7章 算法和数据结构基础——用数组保存数据 174
7.1 数组的定义、引用和初始化 174
7.2 向函数传递批量数据 179
7.2.1 按值传递与模拟按引用传递 179
7.2.2 一维数组的参数传递——以筛法求素数为例 179
7.2.3 二维数组的参数传递——以杨辉三角为例 182
7.3 数组下标越界错误实例分析 184
7.3.1 一维数组的下标越界实例分析 184
7.3.2 二维数组的下标越界实例分析 185
7.4 扩展阅读 安全编码规范 187
7.5 本章思维导图 188
习题7 188
第8章 算法和数据结构基础——查找和排序算法 190
8.1 线性查找算法——众里寻他千百度 190
8.1.1 线性查找算法的基本原理 191
8.1.2 线性查找算法的程序实现 191
8.2 二分查找算法——猜数游戏中的智慧 193
8.2.1 二分查找算法的基本原理 193
8.2.2 二分查找算法的递归和迭代实现 194
8.2.3 二分查找算法的实际应用 195
8.3 求最值算法 197
8.4 排序算法——如影随形的“顺序” 200
8.4.1 交换排序算法 200
8.4.2 选择排序算法 203
8.4.3 冒泡排序算法 203
8.5 本章思维导图 206
习题8 207
第9章 算法和数据结构基础——指针 209
9.1 指针——C语言世界中的如意金箍棒 209
9.1.1 变量的寻址方式 210
9.1.2 指针变量的定义、初始化及其解引用 210
9.2 指针变量与模拟按引用传参 213
9.3 函数指针及其应用 218
9.3.1 函数指针的概念 218
9.3.2 函数指针的应用 220
9.4 指针及其孪生兄弟 222
9.4.1 指针上的游走 223
9.4.2 指针和一维数组的前世之缘 225
9.5 文件指针和格式化文件读写 228
9.5.1 文本文件和二进制文件 228
9.5.2 文件指针与文件缓存 230
9.5.3 文件的打开与关闭 232
9.5.4 标准输入输出重定向 234
9.5.5 文件的格式化读写 236
9.6 扩展阅读 函数指针数组 237
9.7 扩展阅读 安全编码规范 238
9.8 本章思维导图 240
习题9 240
第10章 算法和数据结构基础——字符串和文本处理 242
10.1 字符串的存储、表示与处理 242
10.1.1 字符串的存储与表示 242
10.1.2 字符串的输入和输出 245
10.1.3 字符串处理函数 250
10.2 字符串的应用——编程带你去看“诗和远方” 252
10.2.1 向函数传递字符串——从微情书到回文诗和回文对联 252
10.2.2 从函数返回字符串——破解藏头诗 256
10.2.3 错误实例分析 258
10.3 指针数组及其应用 261
10.3.1 指针和二维数组间的关系——以扑克牌为例 261
10.3.2 字符指针数组和二维字符数组 264
10.3.3 进阶内容:错误实例分析 269
10.4 文本文件的读写及应用 273
10.4.1 读写文件中的字符 273
10.4.2 读写文件中的字符串 275
10.5 扩展阅读 安全编码规范和缓冲区溢出攻击 277
10.6 本章思维导图 282
习题10 283
第11章 算法和数据结构基础——用结构封装数据 286
11.1 结构体类型及其应用——变形金刚之组合金刚 286
11.1.1 结构体类型的声明和结构体变量的定义 287
11.1.2 结构体成员的初始化和访问 290
11.1.3 结构体与数组的嵌套 292
11.1.4 结构体占内存的字节数 293
11.1.5 结构体的相关计算和操作 295
11.2 用结构体封装函数参数 297
11.2.1 在函数之间传递结构体数据 297
11.2.2 结构体应用实例1:奥运奖牌排行榜 301
11.2.3 结构体应用实例2:一万小时定律 307
11.2.4 结构体应用实例3:洗发牌模拟 308
11.3 共用体类型和枚举类型 310
11.3.1 共用体类型及其应用 310
11.3.2 枚举类型及其应用 314
11.4 扩展阅读1 表驱动编写高质量的代码 315
11.5 扩展阅读2 安全编码规范 322
11.6 本章思维导图 323
习题11 323
第12章 算法和数据结构基础——结构设计之美 325
12.1 从定长数组到动态数组 325
12.1.1 动态内存分配 325
12.1.2 动态数组实例——随机点名 327
12.2 从静态数据结构到动态数据结构 330
12.2.1 线性表的链式存储 330
12.2.2 单向链表的基本操作 331
12.3 栈的顺序存储和链式存储——再谈回文诗 337
12.4 用多种数据结构求解循环报数问题 342
12.4.1 用单向循环链表求解循环报数问题 342
12.4.2 用循环队列求解循环报数问题 346
12.5 树和图等非线性数据结构 353
12.5.1 树的概念和应用 353
12.5.2 图的概念和应用 356
12.6 扩展阅读 安全编码规范 357
12.7 本章思维导图 360
习题12 360
附录A C语言中的关键字 362
附录B GCC中数据类型占内存的字节数和表数范围 363
附录C 运算符的优先级与结合性 364
附录D 常用字符的ASCII码对照表 365
附录E 二进制补码的计算方法 366
附录F 输入输出格式转换说明 368
附录G 常用的ANSI C标准库函数 371
附录H 位运算 379
参考文献 381
|
|