图灵原创

C程序设计伴侣——帮你更好地理解谭浩强老师的那本书以及更多!

陈良乔 (作者)
上市销售
本书是谭浩强老师经典的《C 程序设计》(以下简称原书)一书的最佳伴侣,是对原书有益且神奇的补充。本书对原书中没有讲透彻的没有讲明白的那些概念、知识和技术点进行了深刻却易于理解的讲解,并把原书中遗漏的、忽视的,甚至是多少有点问题的,以及那些未曾涉及的但作为初学者或称为未来的程序员绝对应该知道的基础知识、编程素养、编程思想,以及业内行规一并讲解清楚了。

  较之原书,这本伴侣更加的有趣、更加的通俗易懂。在内容上,较之原书,这本伴侣更加的深刻、更加的透彻,具有更加广阔的视野和更加深厚的内涵。在实用性上,这本伴侣较之原书更加的实战,可以让你养成良好且符合业界标准的编程习惯和编程思想,为今后的继续前行打下必要而优秀的基础。

输入优惠码:新春特急

电子书每单满200减80,可以用到除夕夜哦,祝大家happy hacking 一整年!

纸书停发:2月3日~26日

出版信息

  • 书  名C程序设计伴侣——帮你更好地理解谭浩强老师的那本书以及更多!
  • 系列书名图灵原创
  • 执行编辑关于本书的内容有任何问题,请联系 傅志红
  • 出版日期2012-10-15
  • 书  号978-7-115-29095-3
  • 定  价49.00 元
  • 页  数332
  • 印刷方式黑白
  • 开  本16开
  • 出版状态上市销售

同系列书

  • Linux就是这个范儿

    赵鑫磊   Jie Zhang(张洁)  

    本书内容源自淘宝技术大学的培训实战。由来自阿里巴巴集团的资深Linux系统专家赵鑫磊和同样来自阿里巴巴集团的支...

  • Go语言编程

    本书以介绍Go语言特性为主,示例则尽量采用作者开发团队平常的实践,内容涉及内存管理(堆和栈)、错误处理、OOP...

  • 推荐系统实践

    项亮   陈义   王益  

    本书从数据出发,一步步地介绍在得到什么数据的时候可以设计怎样的推荐系统。面向广大的推荐系统开发人员,以实战为基...

  • 翻译漫谈——怎样翻译更地道

    余晟  

    翻译是一门非常强调实践并依赖练习的手艺活,这本书是作者从翻译“票友”出发,走“野路”逐渐成长为翻译“熟手”的经...

  • Node.js开发指南

    BYVoid  

      本书首先简要介绍Node.js,然后通过各种示例讲解Node.js 的基本特性,再用案例式教学的方式讲述如...

目录

目  录

**注:浅灰色的目录标题是本书所对应的谭浩强《C程序设计》(第四版)中的相应章节的目录标题。**

**第1章 C语言背后的故事** 程序设计和C语言 1

 **1.1 计算机程序是什么** 什么是计算机程序 1

 **1.2 计算机语言又是什么** 什么是计算机语言 1

  1.2.A 如何用计算机语言来表达一个程序 2

  1.2.B 从汇编语言到高级语言——风格各异的计算机语言 4

 **1.3 C语言真正的特点及其演变** C语言的发展及其特点 6

  1.3A C语言与C++不得不说的那点事 8

  1.3B 我们为什么现在还要学习C语言 9

 **1.4 第一次的亲密接触——Hello,World** 最简单的C语言程序 11

  1.4.A 最简单的C语言程序背后的故事——它的汇编代码是如何被执行的 12

   **1.4.1 比最简单再复杂一点点** 最简单的C语言程序举例 15

   **1.4.2 程序的三要素:数据输入、数据处理与数据输出** C语言程序的结构 18

  1.4.B 编码规范——如何写出简洁优美的代码 19

 **1.5 C程序开发的两个循环和四个步骤** 运行C程序的步骤与方法 21

  1.5A 工欲善其事,必先利其器——使用Eclipse编写C程序 22

  1.5B 使用GCC编译C语言程序 24

 **1.6 程序设计的瀑布模型** 程序设计的任务 25

**第2章 解决问题的思路——算法** 算法——程序的灵魂 28

 **2.1 先有算法,后有程序** 什么是算法 28

  2.1A 算法的时间复杂度和空间复杂度 31

 **2.2 如何将抽象的算法实现为具体的代码** 简单的算法举例 36

 **2.3 算法的特征——简单,没啥可说的** 算法的特性 38

 **2.4 一群聪明的程序员是怎么把事情搞砸的** 怎样表示一个算法 38

 **2.5 掌握结构化的程序设计** 结构化程序设计方法 39

  2.5A 结构化程序设计的基本思想、步骤与流程 39

  2.5B“自顶向下,逐步求精”:把“问题”变成“程序”的魔法 40

**第3章 顺序结构的程序设计** 最简单的C程序设计——顺序程序设计 44

 **3.1 顺序结构程序举例——简单,没啥可说的** 顺序程序设计举例 45

  3.1A 如何理解程序的执行顺序 45

 **3.2 如何描述数据,如何对数据进行运算** 数据的表现形式及其运算 46

  **3.2.1 常量、变量、常变量及符号** 常量和变量 46

  **3.2.2 数据类型及举例** 数据类型 48

  **3.2.3 整型数据及如何选择合适的类型** 整型数据 51

  **3.2.4 字符型数据及举例** 字符型数据 52

  **3.2.5 浮点型数据及比较大小时的特别注意** 浮点型数据 53

  **3.2.6 如何强制指定常量的数据类型** 怎样确定常量的类型 55

  **3.2.7 运算符和表达式及使用经验和建议** 运算符和表达式 55

 **3.3 基本程序单位——语句** C语句 58

  **3.3.1 C语言的语句分类** C语句的作用和分类 58

  **3.3.2 赋值语句及其使用注意** 最基本的语句——赋值语句 60

 **3.4 数据从哪里来,又到哪里去?** 数据的输入输出 61

  **3.4.1 输入输出举例——简单,没啥可说的** 输入输出举例 61

  **3.4.2 输入输出的概念——简单,没啥可说的** 有关数据输入输出的概念 61

  **3.4.3 使用printf函数进行格式化数据输出** 用printf函数输出数据 61

  **3.4.4 使用scanf函数进行格式化数据输入** 用scanf函数输入数据 63

  **3.4.5 单字符的输入输出及敏感信息输入函数** 字符数据的输入输出 64

   3.4.5A 字符串数据的简单输入输出 66

**第4章 选择结构的程序设计** 选择结构程序设计 67

 **4.1 选择结构和条件判断——交通灯例子** 选择结构和条件判断 67

 4.2—4.3 使用if语句实现选择结构 69

 **4.4 逻辑运算符及表达式** 逻辑运算符和逻辑表达式 69

  **4.4.1 逻辑运算符及优先级** 逻辑运算符及其优先次序 69

   4.4.1A 合理的出错处理——让你的程序更受欢迎 71

   **4.4.2 逻辑表达式及其使用注意** 逻辑表达式 71

   **4.4.3 逻辑型变量——时控灯例子** 逻辑型变量 72

 **4.5 条件运算符及表达式** 条件运算符和条件表达式 73

 **4.6 条件结构的嵌套——拜金女择偶例子** 选择结构的嵌套 73

 **4.7 使用switch语句实现多分支选择结构——看天穿衣例子** 用switch语句实现多分支选择结构
75

 **4.8 综合运用——猜数字游戏** 选择结构程序综合举例 78

**第5章 循环结构的程序设计** 循环结构程序设计 82

 **5.1 为什么需要循环控制——简单,没啥可说的** 为什么需要循环控制 82

  5.1A 循环结构的四个要素 82

 **5.2 如果条件满足,就一直做某事的while** 用while语句实现循环 84

 **5.3 一直做某事,直到条件不满足的do…while** 用do…while语句实现循环 86

 **5.4 最完备最复杂的循环语句for** 用for语句实现循环 87

 **5.5 更复杂的数据处理——嵌套的循环** 循环的嵌套 89

 **5.6 如何选择合适的循环结构** 几种循环的比较 89

 **5.7 改变循环的状态** 改变循环执行的状态 90

  5.7.1—5.7.2 用break和continue语句提前终止循环 90

  **5.7.3 break和continue的不同** break语句和continue语句的区别 90

 **5.8 综合运用——检测磁盘剩余容量与统计字符串中的单词数** 循环程序举例 91

**第6章 处理批量数据的利器——数组** 利用数组处理批量数据 95

 **6.1 如何定义和引用一维数组** 怎样定义和引用一维数组 95

  **6.1.1 如何定义一维数组——保存学生成绩的例子** 怎样定义一维数组 95

  **6.1.2 如何引用一维数组** 怎样引用一维数组元素 96

  **6.1.3 使用memset()函数进行一维数组的初始化** 一维数组的初始化 98

  **6.1.4 用qsort()函数对数组进行排序** 一维数组程序举例 99

 **6.2 如何定义和引用二维数组** 怎样定义和引用二维数组 101

  **6.2.1 如何定义二维数组及二维数组的内存排列方式** 怎样定义二维数组 101

  **6.2.2 如何引用二维数组** 怎样引用二维数组的元素 102

  **6.2.3 使用memset()函数进行二维数组的初始化** 二维数组的初始化 102

  **6.2.4 对二维数组中的数据进行排序** 二维数组程序举例 103

   6.2.4.A 分析问题,定义二维数组描述批量数据 103

   6.2.4.B 向二维数组输入数据 104

   6.2.4.C 用qsort()函数对二维数组进行排序 105

   6.2.4.D 输出二维数组结果 106

   6.2.A 扩展:多维数组的使用 107

 **6.3 字符数组的本质** 字符数组 108

  6.3.1—6.3.3 如何定义字符数组 108

  **6.3.4 字符串和字符数组的区别** 字符串和字符串结束标志 108

  **6.3.5 字符数组和字符串的输入输出** 字符数组的输入输出 109

  **6.3.6 使用字符串处理函数完成字符串处理任务** 使用字符串处理函数 110

   6.3.6.A 用gets()和puts()输入输出字符串 110

   6.3.6.B 用strcat()连接两个字符串 110

   6.3.6.C 用strchr()和strstr()查找字符串 112

   6.3.6.D 用strcmp()比较字符串 113

  **6.3.7 综合运用——自己写一个strsub()函数截取字符串** 字符数组应用举例 115

 6.A 如何运用数组处理批量数据——一个计算平均血糖的例子 117

  6.A.A 什么时候应该使用数组 117

  6.A.B 如何将数据输入到数组 117

  6.A.C 如何处理数组中的数据 118

  6.A.D 数组使用的三部曲:定义数组、输入数据、处理数据 119

**第7章 模块化程序设计的根基——函数** 用函数实现模块化程序设计 121

 **7.1 为什么要用函数——便于代码的管理和复用** 为什么要用函数 121

 **7.2 如何声明函数** 怎样定义函数 122

  **7.2.1 为什么要声明函数** 为什么要定义函数 123

  **7.2.2 声明函数的方法** 定义函数的方法 123

   7.2.2A 声明函数的三要素:返回值、函数名、参数列表 124

 **7.3 如何调用函数** 调用函数 128

  **7.3.1 调用的形式及调用语句** 函数调用的形式 128

  **7.3.2 函数调用时的数据传递——两个方向的传递** 函数调用时的数据传递 129

   7.3.2A 如何向函数传递体积很大的数据 130

  **7.3.3 调用的过程——简单,没啥可说的** 函数调用的过程 132

  **7.3.4 关于函数的返回值** 函数的返回值 133

   7.3.4A 如何从函数返回多个结果数据 133

 **7.4 编译器对函数声明的要求** 对被调用函数的声明和函数原型 137

  7.4A 创建一个我们自己的头文件 137

   7.A 站在巨人的肩膀上——如何使用已有的函数库 140

   7.B 我也能成为巨人——如何创建一个函数库 146

 **7.5 嵌套的函数调用** 函数的嵌套调用 151

 **7.6 函数的递归调用——统计字符串出现的次数** 函数的递归调用 152

   7.C 让函数飞——在C语言中嵌入汇编代码 155

   **7.7 将数组作为函数参数传递** 数组作为函数参数 157

 **7.8 变量的生存期** 局部变量和全局变量 157

  **7.8.1 局部变量的定义及作用域** 局部变量 158

   7.8.1A 不要从函数返回指向局部变量的指针 161

   **7.8.2 全局变量及跨文件的全局变量** 全局变量 161

 **7.9 变量的存储方式及其区别** 变量的存储方式和生存期 163

 **7.10 变量的声明和定义的区别——是否建立存储空间** 关于变量的声明和定义 164

 **7.11 控制函数的访问范围** 内部函数和外部函数 165

  7.D 函数使用的四项基本原则 167

**第8章 指针?没啥好怕的!** 善于利用指针 170

 **8.1 什么是指针** 指针是什么 170

 **8.2 什么是指针变量** 指针变量 171

  **8.2.1 使用指针变量的例子——指针的四大用途** 使用指针变量的例子 171

   8.2.1A 什么是NULL指针 176

  **8.2.2 如何定义指针变量** 怎样定义指针变量 178

   8.2.2A 内存的动态申请与释放 180

  **8.2.3 如何引用指针变量** 怎样引用指针变量 182

   8.2.3A 指针变量存放在哪里呢? 183

  **8.2.4 使用指针变量作为函数参数的场合** 指针变量作为函数参数 184

 **8.3 更灵活的数组访问方式——使用指针访问数组** 通过指针引用数组 185

  8.3.1—8.3.3A 使用指针访问数组的要点 185

  **8.3.4 如何向函数传递一个数组** 用数组名作函数参数 188

  **8.3.5 通过指针引用多维数组的要点——统计学生成绩的例子** 通过指针引用多维数组 188

 **8.4 利用指针引用字符串** 通过指针引用字符串 193

 **8.5 定义指向函数的指针** 指向函数的指针 195

  **8.5.1 了解函数指针** 什么是函数指针 195

   8.5.1A 函数指针背后的故事——剖析它的汇编代码 195

  **8.5.2 利用函数指针变量调用函数** 用函数指针变量调用函数 198

  **8.5.3 函数指针变量的定义和使用** 怎样定义和使用指向函数的指针变量 199

  **8.5.4 用函数指针作函数参数——在函数之间传递函数,即传递操作** 用指向函数的指针作函数参数 201

 **8.6 使用指针作为函数的返回值** 返回指针值的函数 206

 **8.7 指针数组及指向指针的指针** 指针数组和多重指针 207

  **8.7.1 什么是指针数组——一个电磁炉火力控制程序** 什么是指针数组 207

  **8.7.2 指向指针的指针** 指向指针数据的指针 209

  **8.7.3 向main()函数传递数据** 指针数组作main函数的形参 212

 **8.8 动态内存分配及动态调整** 动态内存分配与指向它的指针变量 214

 **8.9 指针的“醒世恒言”** 有关指针的小结 214

  8.A 如何避免错误地使用指针 216

**第9章 建立自己的数据类型** 用户自己建立数据类型 220

 **9.1 结构体变量登场** 定义和使用结构体变量 221

  9.1.1—9.1.3 关于这三小节的特别说明 221

   9.1.A 定义结构体应该注意的问题 221

   9.1.B 使用结构体以及它的数据成员 222

 **9.2 使用结构体数组——利用qsort()函数对数组排序** 使用结构体数组 225

  9.2.1—9.2.2 关于这两小节的特别说明 227

 **9.3 利用结构体指针减少传递的数据量** 结构体指针 227

  9.3.1—9.3.3 关于这三小节的特别说明 229

 **9.4 笔试必考,面试必问的数据结构——链表** 用指针处理链表 229

  **9.4.1 链表是神马** 什么是链表 230

  **9.4.2 如何建立静态链表** 建立简单的静态链表 230

  **9.4.3 如何建立动态链表** 建立动态链表 230

  **9.4.4 如何输出链表** 输出链表 233

   9.4.A 链表数据的处理:对链表进行排序和查找 233

   9.4.B 链表数据的处理:查找结点 238

   9.4.C 释放一个链表 241

 **9.5 共用体类型的定义和使用** 共用体类型 242

  9.5.1—9.5.3 关于这三小节的特别说明 244

 **9.6 什么是枚举类型** 使用枚举类型 244

 **9.7 数据类型也可以有个更好记更好用的绰号——用typedef声明新的数据类型** 用typedef声明新类型名 245

**第10章 文件的输入与输出** 对文件的输入输出 246

 10.1 在C中文件的概念是怎样的 C文件的有关基本知识 246

  10.1.1—10.1.5 关于这五小节的特别说明 247

   10.1A C语言所处理的文件类型 247

 **10.2 如何打开与关闭文件** 打开与关闭文件 248

  **10.2.1 使用fopen函数打开数据文件及注意事项** 用fopen函数打开数据文件 248

   10.2.1A 用freopen()重定向标准输入输出流 249

  **10.2.2 使用fclose函数关闭数据文件及注意事项** 用fclose函数关闭数据文件 251

 **10.3 对数据文件进行顺序读写** 顺序读写数据文件 251

  10.3.1—10.3.2 怎样向文件读写字符和字符串 251

  **10.3.3 使用函数来进行数据文件的格式化读写** 用格式化的方式读写文件 254

  **10.3.4 二进制方式的文件读写——读写一张图片** 用二进制方式向文件读写一组数据 254

   10.3.A 文件读写的“三大纪律” 259

 **10.4 在任意位置读写数据文件** 随机读写数据文件 260

  10.4.1—10.4.2 关于这两小节的特别说明 264

 10.5—10.5A 扩展:访问文件的各种属性 264

  10.5A.A 如何判断文件是否存在 264

  10.5A.B 如何获得文件的日期和大小 266

第A章 程序是如何炼成的 268

 A.A 问题的提出——统计网页中的词频 268

 A.B 自顶向下:分析问题,划分模块 268

  A.B.A 分析数据输入模块 269

  A.B.B 分析数据处理模块 269

  A.B.C 分析数据输出模块 271

 A.C 逐步求精:用函数实现各个模块 271

  A.C.A 实现数据输入模块 271

  A.C.B 实现数据处理模块 273

  A.C.C 组装实现数据预处理模块 276

  A.C.D 实现计算词频模块 279

  A.C.E 实现文件排序模块 281

  A.C.F 实现数据输出模块 282

  A.C.G 打扫战场:释放动态申请的内存 282

 A.D 百炼成钢:如何调试我们的程序 284

 A.E 程序就是这样炼成的 287

第B章 接下来我该…… 288

 B.A 接下来要读的书 288

  B.A.A 提升对C语言的理解和掌握 288

  B.A.B 做一个有思想的程序员 290

 B.B 接下来要做的事 293

  B.B.A 编码、编码、再编码 293

  B.B.B 软件开发模型:一个项目是如何运作的 293

  B.B.C 实际参与一个项目 300

 B.C 接下来该走的路 300

  B.C.A 开发方向的选择:底层开发、应用开发还是网络开发? 301

  B.C.B 开发语言的选择:C语言、C++还是C#? 304

相关文章

  • 出版圈郭志敏 5推荐

    《C程序设计伴侣》诞生记

    引自图灵教育陈冰老师的【编辑的话】我第一次看谭老师的《C程序设计》,是20年前,那时我17岁,大学一年级。当时感觉这本书很神奇,对编程充满了好奇。同时也感觉这本书有些难,有些地方,比如指针,虽然看过书,也有老师讲过了,但依然感觉似懂非懂。还有些知识,书中只讲了怎么做,但没有讲为…...

  • 出版圈郭志敏 2推荐

    C语言与C++不得不说的那点事

    说到C语言,就不得不说它的继承者——C++语言。众所周知,C++语言是在C语言的基础上,添加了面向对象、模板等现代程序设计语言的特性而发展起来的。两者无论是从语法规则上,还是从运算符的数量和使用上,都非常相似,所以我们常常将这两门语言统称为“C/C++”。虽然因为天然的血缘关系…...

  • 紫凤 7推荐

    牛奶咖啡好伴侣——《C程序设计伴侣》对《C程序设计》

      喝咖啡,常常会加上咖啡伴侣或是牛奶,它会遮盖咖啡的苦涩,让咖啡更加香醇。如果把谭浩强老师的《C程序设计》比作一杯略带苦涩的咖啡,这本书就是它最佳的伴侣,让你的C程序设计之路更香醇。                                               …...

  • 魔力猫 9推荐

    因《C程序设计伴侣》的争执,谈谭浩强《C程序设计》的批评

    前几天在网上看到一篇《C语言与C++不得不说的那点事》的博文[http://www.wking-china.com/xpjylc/turingbooks/article/details/7860153#comments][1]。发现是图灵的一本新书《C程序设计伴侣》的片段,故去图灵网站转转。发现这书的争…...

  • 袁野 3推荐

    学习谭浩强老师的《C程序设计》,必配《C程序设计伴侣》!

    《C程序设计伴侣》作者陈良乔:“更有趣、更容易、更深刻、更实战的《C程序设计伴侣》——《C程序设计》的有力补充和最佳伴侣。在中国,几乎每一个人,第一次接触程序设计,都是通过谭浩强老师的《C程序设计》开始的。从某种意义上说,它是中国万千程序员的启蒙读本。” ![enter im…...

  • 虽然没有看这本书,不过我买过“图灵系列”的一本名著《编程珠玑》。所以,个人观点,这本书玷污了“图灵”两字,也让“图灵系列”在我心目中的地位大打折扣。
    xusiwei1236  发表于 2013-03-15 12:57:24
  • 290 页的图会让所有热爱代码的人大跌眼镜,不骗你!
    xslidian  发表于 2012-11-25 16:35:14
  • 封面挺卡通的啊,看着蛮舒服的。。。。
    yinjz  发表于 2012-10-16 12:29:38
    • (*^__^*) 嘻嘻……

      紫凤  发表于 2012-10-16 13:27:22
合作: 赌球网 老虎机游戏 新葡京娱乐场