新書推薦:
《
便宜货:廉价商品与美国消费社会的形成
》
售價:NT$
352.0
《
读书是一辈子的事(2024年新版)
》
售價:NT$
352.0
《
乐道文库·什么是秦汉史
》
售價:NT$
367.0
《
汉娜·阿伦特与以赛亚·伯林 : 自由、政治与人性
》
售價:NT$
500.0
《
女性与疯狂(女性主义里程碑式著作,全球售出300万册)
》
售價:NT$
500.0
《
药食同源中药鉴别图典
》
售價:NT$
305.0
《
设计中的比例密码:建筑与室内设计
》
售價:NT$
398.0
《
冯友兰和青年谈心系列:看似平淡的坚持
》
售價:NT$
254.0
|
內容簡介: |
本书按照程序设计的基本要求,采用简明易用原则组织内容。全书案例实现以 C 语法为主,面向在线评测(OnlineJudge,OJ)系统,提高学生解决实际问题的能力,既注重知识点的凝练,又强调其应用场景,结合了大量的例题。本书与清览、PTA、力扣等平台紧密衔接,构建了全方位、全时段的学习环境。在知识点之间、知识点和习题之间构建双链知识网络,构建新形态教材,形成理论与实践的紧密互补。
全书共分8章:第1章指明了教程的特色和C 的学习准备;第2章重点阐述数据类型、操作符和输入输出等语法基础;第3章包括分支结构和函数初步设计等内容;第4章重点介绍循环结构及其应用;第5章介绍数组以及其应用,以及C 和C 形式的字符串;第6章通过指针重点了解空间地址分配的概 念;第7章简单介绍了面向对象的概念;第8章介绍了模板和容器的应用。
本书适合作为高等院校计算机、软件工程、人工智能等专业本科生编程课程的入门教材,同时可作为面向OJ 平台的各类竞赛的参考书。
|
目錄:
|
第1章 学习准备 / 1
1.1 教程特色 / 1
1.1.1 双链知识网络 / 1
1.1.2 面向OJ系统 / 1
1.1.3 简明原则 / 2
1.1.4 易用原则 / 2
1.2 计算机基本原理 / 2
1.2.1 运算器基本原理 / 3
1.2.2 程序执行和内存管理基本原理 / 4
1.3 C 程序设计 / 8
1.3.1 C 程序基本结构 / 8
1.3.2 C 程序的编译与运行 / 8
1.4 IDE的使用 / 9
1.4.1 CodeBlocks新建项目 / 10
1.4.2 CodeBlocks调试基础 / 13
1.4.3 CodeBlocks常用功能 / 15
1.5 在线评测系统 / 16
1.5.1 PTA / 16
1.5.2 其他OJ / 17
第2章 程序设计基础 / 19
2.1 数据类型 / 19
2.1.1 常见数据类型 / 19
2.1.2 转义字符 / 21
2.1.3 标识符 / 21
2.1.4 C语言的输出方式 / 21
2.2 整型 / 23
2.2.1 整型的数值范围 / 23
2.2.2 整数N进制转十进制 / 26
2.2.3 整数十进制转换为N进制 / 27
2.3 浮点型 / 27
2.3.1 浮点数的内存表示 / 27
2.3.2 纯小数十进制转换为二进制 / 29
2.4 其他数据类型 / 30
2.4.1 字符 / 30
2.4.2 字符串 / 34
2.4.3 布尔型 / 35
2.5 数据类型转换 / 36
2.5.1 隐式类型转换 / 36
2.5.2 显式类型转换 / 39
2.5.3 整型提升* / 40
2.5.4 类型转换的精度损失 / 41
2.5.5 四舍五入和趋零舍入 / 42
2.6 操作符 / 46
2.6.1 运算符 / 46
2.6.2 除法和整除 / 46
2.6.3 求模运算 / 48
2.6.4 逻辑运算符 / 49
2.6.5 自增和自减运算 / 51
2.6.6 sizeof运算符 / 52
2.6.7 位运算* / 52
2.6.8 三个层次的变量交换 / 54
2.7 获取用户输入 / 56
2.7.1 整型和浮点型的cin输入 / 56
2.7.2 字符串的输入 / 58
2.7.3 字符的输入 / 60
2.7.4 数字和字符的混合输入 / 60
2.7.5 逗号分隔的数值 / 62
2.8 时间处理 / 64
2.9 常用数学函数 / 65
2.10 运算效率的底层分析* / 67
2.10.1 负数和补码 / 67
2.10.2 整型的极限值 / 69
2.10.3 常见运算的效率分析 / 70
题单 / 70
第3章 分支与函数初步 / 72
3.1 分支结构 / 72
3.1.1 单分支控制 / 72
3.1.2 双分支控制 / 75
3.1.3 多分支控制 / 77
3.1.4 分支嵌套 / 78
3.2 分支程序优化 / 80
3.2.1 三天打鱼两天晒网 / 80
3.2.2 虫子吃苹果 / 81
3.3 自定义函数 / 83
3.3.1 函数定义 / 83
3.3.2 函数执行顺序 / 84
3.3.3 函数声明 / 85
3.3.4 函数返回值 / 87
3.3.5 变量的作用域 / 88
3.3.6 参数传递和引用 / 90
3.3.7 函数重载 / 91
3.3.8 参数的默认值* / 93
3.4 局部变量和函数的内存模型 / 94
3.5 变量的深度理解* / 97
题单 / 98
第4章 循环 / 99
4.1 while循环 / 99
4.2 do-while循环 / 101
4.3 for循环 / 102
4.4 嵌套循环 / 105
4.4.1 嵌套循环基本方法 / 105
4.4.2 内循环变量的初始化 / 108
4.5 break和continue / 109
4.5.1 死循环与break / 109
4.5.2 循环与continue / 110
4.6 循环与递归 / 111
4.6.1 递归的演化 / 111
4.6.2 简单递归 / 114
4.6.3 分类递归 / 116
4.7 经典循环问题 / 119
4.7.1 整数分解和倒序重组 / 119
4.7.2 素数判断 / 119
4.7.3 穷举法 / 121
4.7.4 对称数判断 / 122
4.7.5 二进制中1的个数 / 123
4.7.6 乘法的加法实现* / 125
4.8 循环与输入 / 127
4.8.1 输入重定向 / 127
4.8.2 数量不确定输入 / 129
4.8.3 多级数量不确定输入 / 130
4.9 程序优化案例 / 131
题单 / 135
第5章 数组与字符串 / 136
5.1 一维数组的定义和初始化 / 136
5.1.1 一维数组的定义 / 136
5.1.2 一维数组的初始化 / 137
5.1.3 一维数组的内存模型 / 138
5.1.4 数组的基本运算 / 139
5.1.5 数组作为函数参数 / 141
5.2 一维数组的应用 / 142
5.2.1 数组的插入与删除 / 142
5.2.2 数组与循环的联动 / 143
5.2.3 尺取法 / 145
5.2.4 空间换时间 / 148
5.2.5 打表法 / 151
5.2.6 排序 / 156
5.2.7 动态规划* / 160
5.3 二维数组 / 164
5.4 C 的字符串 / 167
5.4.1 字符串的基本操作 / 167
5.4.2 字符串的长度和容量* / 170
5.4.3 字符串与整型的相互转换 / 173
5.4.4 字符串分割 / 175
5.4.5 子串问题 / 176
5.4.6 高精度计算 / 178
5.5 C风格的字符串 / 179
5.5.1 C风格字符串的定义和初始化 / 179
5.5.2 C风格字符串的基本操作 / 180
5.5.3 C风格字符串的应用 / 184
题单 / 187
第6章 指针 / 188
6.1 指针的概念与指针变量的定义 / 188
6.1.1 指针与指针变量 / 188
6.1.2 指针变量的定义 / 189
6.1.3 指针的两个“值” / 190
6.1.4 强大的指针 / 191
6.2 数组与指针 / 192
6.2.1 一维数组与指针 / 192
6.2.2 二维数组与指针 / 196
6.2.3 二维数组与一维数组 / 198
6.2.4 数组作为函数参数 / 199
6.2.5 C风格字符串与指针 / 200
6.3 堆内存与动态空间分配* / 202
题单 / 204
第7章 面向对象 / 205
7.1 类和对象 / 205
7.2 动态对象和this指针 / 207
7.3 动态属性和析构函数 / 209
7.4 封装 / 210
7.5 继承 / 211
7.6 多态 / 213
7.7 操作符重载 / 216
7.8 静态属性 / 217
7.9 综合练习——构建链表 / 219
题单 / 223
第8章 模板和容器 / 224
8.1 泛型编程 / 224
8.1.1 模板函数 / 224
8.1.2 模板类* / 226
8.2 STL容器 / 227
8.2.1 容器的分类 / 228
8.2.2 迭代器 / 230
8.3 向量(vector) / 232
8.3.1 遍历 / 232
8.3.2 向量的典型操作 / 235
8.3.3 查找重复元素 / 237
8.4 高级应用 / 238
8.4.1 降序排序 / 238
8.4.2 全部删除指定元素 / 239
8.4.3 for_each算法* / 241
8.5 堆栈(stack) / 242
8.6 其他典型序列容器* / 244
8.6.1 双向队列deque / 244
8.6.2 单向队列queue / 246
8.6.3 链表(list) / 247
8.7 字典 / 253
8.7.1 关联容器字典map / 253
8.7.2 无序容器字典unordered_map / 255
8.7.3 无序容器字典unordered_set / 257
8.7.4 字典与循环的联动 / 258
题单 / 261
附录A 知识点汇总 / 262
附录B C 运算符 / 274
参考文献 / 276
|
內容試閱:
|
编者讲授了C语言20年,一直为C语言的灵活和强大所感慨。虽然Java、Python等新的语言层出不穷,广受关注,但从基本编程思想的角度考虑,计算机专业的学生,还是要首先学习C/C 。从2019年开始,根据专业培养需要,整个学院的第一门编程语言修改为C/C 。与C语言相比,C 不仅提供了流、引用等新增语法,还提供了面向对象、泛型编程等。从算法角度,STL的出现极大提升了C 的应用范围。新知识太多,对于大一的初学者不是一件好事。从新手的角度,应该更多地掌握编程的基本语法和基本理念。因此,本教材并不贪大求全,对内容做了精简。第1章描述了一些学习的知识准备;第2章至第6章,主要从面向过程的角度,讲授基本语法和基本算法。函数是一种编程理念,没有独立成为一章,并且从第3章就早早引入,希望初学者能够在潜移默化中接受这样一种思想。第7章的面向对象不是本教材的重点,是为了让读者能更好地了解STL中的各种语法形式,并为后续专业课的学习奠定基础。第8章以模板和容器为主,并没有逐个讲解每个API的用法,而是以案例为引导,让学习者能够用容器解决一些典型的算法
问题。
|
|