新書推薦:
《
数据有道:数据分析+图论与网络+微课+Python编程(鸢尾花数学大系:从加减乘除到机器学习)
》
售價:NT$
1214.0
《
500万次倾听:陪伤心的人聊聊
》
售價:NT$
245.0
《
英国商业500年(见证大国崛起与企业兴衰,启迪未来商业智慧。)
》
售價:NT$
367.0
《
万千心理·儿童心理治疗中的心智化:临床实践指导
》
售價:NT$
398.0
《
自我囚禁的人:完美主义的心理成因与自我松绑(破除你对完美主义的迷思,尝试打破自我评价过低与焦虑的恶性循环)
》
售價:NT$
301.0
《
周易
》
售價:NT$
203.0
《
东南亚的传统与发展
》
售價:NT$
306.0
《
乾隆制造
》
售價:NT$
398.0
編輯推薦:
1.对初学者而言,纯程序设计语言的学习有难度甚至枯燥,因此组织本书的写作秉承从零开始学的要旨,降低入门的难度和兼顾提高学习者的学习兴趣。2.丰富的范例,理论和上机测试实践结合,兼顾自学和教学,提供课后习题解答和视频教学版。
內容簡介:
《轻松学C 编程:案例教学》从初学者的角度循序渐进地从C 语言的基础语法到高级语法进行讲解。全书使用生动的实例和图示,介绍C 面向对象程序设计的基础知识;进而通过案例详解类的高级应用、运算符重载、继承与多态,全面呈现了面向对象程序设计的主要内容。在数据流和文件操作技巧与应用方面,本书还提供了实现相关算法的精选范例,以便读者理解异常处理、C 模板的应用设计方式,并熟悉标准模板函数库的应用。 《轻松学C 编程:案例教学》的各章节中贯穿了大量范例程序的讲解和分析,并在每章末尾附带了习题与解答。《轻松学C 编程:案例教学》叙述简洁、清晰,具有较强的可操作性,适合作为相关专业的教材,也适合初学者自学。对于具有一定编程经验且希望快速掌握C 语言的从业人员,本书也是一本快速掌握C 语言的读物。
關於作者:
胡昭民,现任荣钦科技股份有限公司董事长,美国Rochester Institute of Technology计算机科学研究所毕业,工作专业领域包括:数据结构、算法、编程语言、信息科技公司经营、培训讲师、信息图书及奇幻小说写作等工作,并策划过多套游戏及教学软件的研发及主导营销计划,由于写作资历丰富,是资深且知名的计算机图书作家。已经在我社出版了《图解数据结构 使用C 》《图解数据结构 使用Java》《图解数据结构 使用C#》《游戏设计概率》等,市场反映较好、受到读者的喜爱。
目錄 :
第 1 章 C 入门基础课程 1
1.1 认识C 1
1.1.1 面向对象程序设计 2
1.1.2 算法 5
1.2 第一个C 程序 7
1.2.1 开始编写程序 10
1.2.2 保存程序文件 11
1.2.3 编译器 11
1.2.4 执行程序 12
1.2.5 程序错误 12
1.3 程序结构简介 13
1.3.1 头文件区 13
1.3.2 程序注释 14
1.3.3 主程序区——main()函数 15
1.3.4 命名空间 15
1.3.5 输入输出功能简介 16
1.3.6 程序语句编写格式 17
1.3.7 标识符与保留字 17
1.4 上机编程实践 19
本章习题 19
第 2 章 变量、常数与数据类型 21
2.1 变量简介 22
2.2 常数 24
2.3 基本数据类型 25
2.3.1 整数 25
2.3.2 浮点数 27
2.3.3 字符 29
2.3.4 转义字符 30
2.3.5 布尔数据类型 31
2.4 上机编程实践 33
本章习题 34
第 3 章 表达式与运算符 35
3.1 表达式的表示法 35
3.2 认识运算符 36
3.2.1 运算符的优先级 36
3.2.2 赋值运算符 37
3.2.3 算术运算符 37
3.2.4 关系运算符 39
3.2.5 逻辑运算符 40
3.2.6 位运算符 41
3.2.7 递增与递减运算符 45
3.2.8 复合赋值运算符 47
3.3 数据类型转换 47
3.3.1 自动类型转换 48
3.3.2 强制类型转换 49
3.3.3 强制类型转换运算符简介 50
3.4 上机编程实践 51
本章习题 52
第 4 章 流程控制结构 55
4.1 顺序结构 55
4.2 选择结构 56
4.2.1 if条件语句 56
4.2.2 if-else条件语句 57
4.2.3 if-else if条件语句 58
4.2.4 条件运算符 60
4.2.5 switch条件语句 61
4.3 重复结构 63
4.3.1 for循环语句 64
4.3.2 while循环语句 66
4.3.3 do-while循环语句 68
4.4 循环控制语句 69
4.4.1 break语句 69
4.4.2 continue语句 70
4.4.3 goto语句 72
4.5 上机编程实践 73
本章习题 75
第 5 章 数组与字符串 78
5.1 数组简介 78
5.1.1 数组表示法 78
5.1.2 数组与变量 79
5.1.3 一维数组 79
5.1.4 二维数组 81
5.1.5 多维数组 83
5.2 字符串简介 84
5.2.1 字符串声明 84
5.2.2 字符串数组 87
5.3 String类 89
5.3.1 声明String类 89
5.3.2 字符串运算符 91
5.3.3 String类的成员函数 92
5.4 上机编程实践 94
本章习题 96
第 6 章 指针与地址 98
6.1 认识地址 98
6.1.1 指针的作用 99
6.1.2 变量地址的存取 99
6.1.3 指针变量的声明 100
6.1.4 指针运算 103
6.1.5 多重指针 105
6.2 指针与数组 107
6.2.1 指针与一维数组 108
6.2.2 指针与多维数组 109
6.2.3 指针与字符串 111
6.2.4 指针数组 113
6.3 动态分配内存 116
6.3.1 动态分配内存和静态分配内存 116
6.3.2 动态分配变量 117
6.3.3 动态分配数组 118
6.4 引用类型简介 120
6.4.1 引用类型声明 120
6.4.2 指针引用简介 121
6.5 上机编程实践 123
本章习题 124
第 7 章 函数入门 128
7.1 函数功能简介 128
7.1.1 自定义函数 128
7.1.2 函数声明 130
7.1.3 函数调用 132
7.2 认识参数传递 133
7.2.1 传值调用 133
7.2.2 传址调用 135
7.2.3 传引用调用 136
7.2.4 参数默认值 137
7.2.5 数组参数 139
7.2.6 返回值 140
7.3 上机编程实践 142
本章习题 143
第 8 章 函数的进阶应用 145
8.1 函数指针简介 145
8.1.1 声明函数指针 145
8.1.2 参数型函数指针 147
8.1.3 函数指针数组 149
8.2 命令行参数 150
8.3 变量种类 152
8.3.1 全局变量 153
8.3.2 局部变量 153
8.3.3 区块变量 153
8.4 变量的存储类型 153
8.4.1 自动变量 153
8.4.2 静态局部变量 154
8.4.3 外部变量 155
8.4.4 静态外部变量 156
8.4.5 寄存器变量 158
8.5 特殊函数功能 158
8.5.1 递归函数 158
8.5.2 内联函数 160
8.5.3 函数重载 161
8.6 上机编程实践 163
本章习题 164
第 9 章 预处理指令与宏 166
9.1 预处理指令 166
9.2 #define语句 168
9.2.1 宏定义基本语句 168
9.2.2 宏定义函数 169
9.2.3 宏函数简介 170
9.2.4 标准预处理宏 172
9.3 条件编译语句 173
9.4 上机编程实践 173
本章习题 174
第 10 章 自定义数据类型与应用 176
10.1 结构 176
10.1.1 结构声明方式 176
10.1.2 结构的存取 177
10.1.3 结构指针 178
10.2 结构与数组 180
10.2.1 结构数组 180
10.2.2 结构数组的成员 182
10.2.3 结构指针数组 183
10.3 嵌套结构 185
10.4 函数与结构 187
10.4.1 结构传值调用 187
10.4.2 结构传址调用 189
10.4.3 结构传引用调用 189
10.5 其他自定义数据类型 190
10.5.1 类型定义 190
10.5.2 枚举类型 191
10.5.3 联合类型 193
10.6 上机编程实践 195
本章习题 197
第 11 章 认识面向对象程序设计 200
11.1 类的基本概念 200
11.1.1 类对象的声明 201
11.1.2 访问权限的关键字 202
11.1.3 声明类对象 202
11.2 构造函数与析构函数 205
11.2.1 构造函数 205
11.2.2 构造函数的重载 208
11.2.3 析构函数 209
11.2.4 创建指针对象 211
11.3 上机编程实践 213
本章习题 213
第 12 章 类的进阶应用 215
12.1 对象数组和友元函数 215
12.1.1 对象数组 215
12.1.2 友元函数 217
12.1.3 友元类 220
12.2 this指针与静态数据成员 222
12.2.1 this指针 222
12.2.2 静态数据成员 224
12.2.3 嵌套类 225
12.3 在函数中传递对象参数 227
12.3.1 对象传值调用 227
12.3.2 对象传址调用 227
12.3.3 对象传引用调用 228
12.4 上机编程实践 228
本章习题 228
第 13 章 运算符重载 229
13.1 运算符重载简介 229
13.1.1 重载的定义与规则 229
13.1.2 一元运算符重载 232
13.1.3 二元运算符重载 233
13.2 特殊运算符重载 235
13.2.1 “>>”与“<<”运算符重载 235
13.2.2 “=”运算符重载 237
13.2.3 “==”运算符重载 239
13.2.4 “ ”与“--”运算符重载 241
13.3 类型转换运算符重载 243
13.3.1 类类型转换为基本数据类型 244
13.3.2 基本数据类型转换为类类型 246
13.3.3 类类型转换成其他类类型 248
13.4 上机编程实践 250
本章习题 250
第 14 章 继承与多态 252
14.1 认识继承关系 252
14.1.1 基类与派生类 252
14.1.2 单继承 253
14.1.3 public关键字 253
14.1.4 protected关键字 254
14.1.5 private关键字 257
14.1.6 多继承 259
14.2 派生类的构造函数与析构函数 261
14.2.1 单继承构造函数与析构函数的调用顺序 262
14.2.2 多继承构造函数与析构函数的调用顺序 263
14.3 多态与虚函数简介 265
14.3.1 静态绑定与动态绑定 265
14.3.2 声明虚函数 267
14.3.3 纯虚函数 269
14.3.4 抽象基类 269
14.3.5 虚基类 270
14.4 上机编程实践 272
本章习题 273
第 15 章 文件入门与处理机制 274
15.1 数据流的概念 274
15.2 文件简介 275
15.2.1 文件分类 275
15.2.2 顺序存取的文件和随机存取的文件 276
15.3 文件的输入/输出管理 276
15.3.1 文件的打开 277
15.3.2 文件的关闭 277
15.4 文本文件操作技巧 279
15.4.1 文本文件的写入 279
15.4.2 文本文件的读取函数 280
15.5 二进制文件操作技巧 281
15.5.1 写入二进制文件 282
15.5.2 读取二进制文件 283
15.5.3 随机存取文件方式 284
15.6 上机编程实践 286
本章习题 287
第 16 章 异常处理与模板 288
16.1 异常处理的基本认识 288
16.1.1 简单的异常处理结构 288
16.1.2 try语句 289
16.1.3 catch区块重载 290
16.1.4 嵌套try…catch区块 291
16.1.5 一次捕捉所有异常 293
16.1.6 重新抛出异常 294
16.2 认识模板功能 296
16.2.1 模板分类 296
16.2.2 函数模板 296
16.2.3 声明函数模板 297
16.2.4 非类型参数的函数模板 299
16.3 类模板 300
16.3.1 声明类模板 300
16.3.2 堆栈类模板 302
16.3.3 非类型参数的类模板 304
16.4 上机编程实践 307
本章习题 307
第 17 章 大话标准模板函数库 310
17.1 认识向量容器 310
17.2 堆栈的实现 312
17.3 队列的实现 314
17.3.1 单向队列 315
17.3.2 双向队列 316
17.4 认识集合 317
17.4.1 并集set_union 318
17.4.2 交集set_intersection 319
17.4.3 差集set_difference 320
17.5 映射 322
17.6 STL排序的实现 324
17.6.1 sort()函数——从小到大升序排序 324
17.6.2 sort()函数——从大到小降序排序 325
17.6.3 向量容器的从小到大升序排序 326
17.6.4 向量容器的从大到小降序排序 327
17.6.5 自定义结构的排序 328
17.7 使用标准模板函数库实现查找 329
17.7.1 调用find()函数实现查找 329
17.7.2 调用find_if()函数进行查找 330
17.7.3 调用binary_search()函数进行二分查找 331
17.8 标准模板函数库链表的实现 333
17.8.1 forward_list()——单向链表 333
17.8.2 单向链表的反转 335
17.8.3 调用insert()函数将指定元素插入链表 336
17.8.4 两个列表进行合并排序 338
17.8.5 列表内容交换——swap()函数 339
17.9 上机编程实践 341
本章习题 343
第 18 章 解析树结构及图结构 344
18.1 树结构 344
18.1.1 用数组来实现二叉树 345
18.1.2 用链表来实现二叉树 347
18.1.3 二叉树节点的插入 349
18.1.4 二叉树节点的删除 350
18.1.5 二叉树的遍历 350
18.2 图结构 353
18.2.1 图的常用数据表示法 354
18.2.2 图的遍历——深度优先遍历法 355
18.2.3 图的遍历——广度优先遍历法 358
18.2.4 Kruskal算法 361
18.2.5 Dijkstra算法 365
18.2.6 Floyd算法 369
本章习题 373
附录A 课后习题参考答案(电子版见下载) 375
附录B C 的常用函数库(电子版见下载) 426
B.1 字符处理函数 426
B.2 字符串处理函数 428
B.3 类型转换函数 430
B.4 时间和日期函数 431
B.5 数学函数 432
B.6 随机数函数 434
附录C 格式化输入/输出数据(电子版见下载) 437
C.1 插入运算符“<<” 437
C.2 常用的输出函数 444
C.3 提取运算符“>>” 445
C.4 常用的输入函数 446
C.5 错误状态位 447
內容試閱 :
C 主要是改良C语言而来,除了保有C语言的主要优点外,C 比C更为简单易学,因为它改进了C中一些容易混淆出错的部分,并且提供了更实用与完整的面向对象设计功能。严格来说,C 融合了传统的程序式语言、面向对象设计以及C 模板3种不同的程序设计方式,使它成为近代最受重视且普及的程序语言。
本书强调理论与实践并重,依照C 功能循序渐进、由浅入深,安排18章介绍C 面向对象程序设计的实务及进阶活用的议题。除了提供可以正确无误地执行的大量程序范例外,各章还提供了上机程序测验单元,可以让学生强化编写与除错能力。另外,本书精心设计了大量的习题,可以协助检验学习成效,本书很适合作为深入学习C 程序设计的教材。本书中所有的C 程序都是以免费的Dev-C 来编译与执行的。
全书分成4部分:
基础语法(第1~4章)
首先简单说明如何进行C 程序的编写、编译、执行与除错,然后介绍变量、常数以及各种数据类型,进而了解各种运算符及流程控制语句。
进阶语法(第5~10章)
首先介绍数组与字符串的声明与综合运用,然后介绍指针与地址的观念与实现,并示范自定义函数、参数传递及函数进阶应用,最后则提到前置处理指令与宏及自定义数据类型。
面向对象(第11~14章)
这部分是本书的重点,笔者以生活化的案例说明类与对象的面向对象程序设计基础知识,介绍了这些入门知识后,再介绍类的进阶应用、运算符重载及继承与多态,来完整呈现面向对象程序设计的精华。
活用技术(第15~18章及附录A~C)
首先介绍数据流及文件的入门观念,探讨各种文件类型的操作技巧与管理。然后介绍异常处理的错误控制机制,同时介绍C 模板的程序设计方式。接着以标准模板函数库来实现各种常见的基础数据结构,包括向量容器、堆栈、队列、集合、映射、排序、查找、链表等。最后安排了数据结构中的树结构和图结构的算法精选范例。附录除提供课后习题参考答案外,还介绍了C 常用函数库及格式化输入输出数据等实用知识点。
为了方便读者学习本书,本书还提供了PPT课件和源代码。请用微信扫描下面的二维码获取,也可按扫描后的页面提示把下载链接转发到你的邮箱中下载。
范例程序 PPT 附录
如果读者在学习和下载本书的过程中遇到问题,可以发送邮件至booksaga@126.com,邮件主题写“轻松学C 编程:案例教学”。
虽然本书力求无误,但疏漏之处在所难免,还望读者不吝指教。
作 者
2023年8月