图书介绍

狂人C 程序员入门必备PDF|Epub|txt|kindle电子书版本网盘下载

狂人C 程序员入门必备
  • 键盘农夫著 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:9787115236494
  • 出版时间:2010
  • 标注页数:482页
  • 文件大小:176MB
  • 文件页数:505页
  • 主题词:C语言-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

狂人C 程序员入门必备PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1篇 理解程序设计1

第1章 基础知识2

1.1什么是编程3

1.1.1计算机如何工作3

1.1.2内存中的程序是哪里来的4

1.1.3可执行文件的制作5

1.1.4 C语言的演化6

1.2怎样用C语言编程7

1.2.1学习C语言编程都需要什么7

1.2.2最简单的C语言程序的基本结构8

1.2.3Dev C﹢﹢9

1.3printf()函数初步13

1.3.1简单的一般用法13

1.3.2特殊的字符13

1.4C语言的“字母”和“单词”14

1.4.1 C语言的“字母”14

1.4.2 C语言的“词”15

小结18

概念与术语18

风格与习惯19

常见错误19

牛角尖19

练习与自测20

第2章 数据类型23

2.1什么是数据类型24

2.1.1“三个世界”理论24

2.1.2问题世界:“万物皆数”24

2.1.3代码世界:书写规则及含义24

2.1.4机器世界里的“机器数”25

2.1.5输出问题27

2.1.6计算2的1到10次幂28

2.1.7代码质量的改进29

2.2让程序记住计算结果——变量31

2.2.1计算机的记忆功能31

2.2.2在代码中实现“记忆”32

2.3int类型——总结与补充35

2.3.1计算机表示负整数的几种方法35

2.3.2计算机码制和C语言的关系36

2.3.3暂时不必关心的一些细节37

2.3.4int类型值的范围37

2.3.5int类型常量在代码中的其他写法38

2.3.6Dev C﹢﹢中int类型的机器数38

2.4对数据类型的进一步讨论39

2.4.1int数据类型的运算40

2.4.2数学公式与数据类型43

2.4.3数据类型——代码与编译器的约定44

2.5莫名其妙的“整型”45

2.5.1unsigned int类型45

2.5.2long、short关键字描述的整数类型46

2.5.3没有常量的char类型47

2.5.4其他51

2.6浮点类型51

2.6.1 double类型常量的代码书写规则51

2.6.2浮点类型数据存储模型52

2.6.3浮点类型的一些特性53

2.6.4浮点类型的运算55

2.6.5 浮点类型的输出及其他55

2.7数据类型与算法57

2.7.1错误的数据类型57

2.7.2所谓算法58

2.7.3一个技巧59

2.7.4更高效率的写法59

2.8算法的特性61

小结61

概念与术语61

风格与习惯63

常见错误63

牛角尖63

练习与自测64

第3章 运算符、表达式及语句66

3.1 C的“动词”及“动词”的“宾语”67

3.2表达式——C语言的“词组”67

3.2.1初等表达式67

3.2.2被误解的“()”67

3.2.3带运算符的表达式68

3.2.4不像表达式的表达式68

3.2.5表达式:专业与副业68

3.2.6赋值运算符左侧的标识符称为左值69

3.2.7函数调用是表达式不是语句69

3.3谁是谁的谁71

3.3.1流行的谬误:优先级决定运算次序71

3.3.2“左结合性”是运算对象先与左面的运算符相结合吗72

3.3.3运算符、表达式小结72

3.4右值的类型转换74

3.4.1明确写出的显式转换——cast运算75

3.4.2 cast运算的规则75

3.4.3 赋值中的转换77

3.4.4 1﹢1.0=?77

3.4.5算术转换:早已废弃的规则和依然有效的规则78

3.5语句的概念81

3.5.1关于语句的闲话81

3.5.2空语句有两种82

3.5.3表达式语句83

3.5.4顺序结构83

3.5.5复合语句84

3.6例题84

3.6.1简单的类型转换84

3.6.2最基础的算法——交换变量的值85

3.6.3编程不是列公式86

3.7算法和数据结构初窥88

3.8在程序运行时提供数据90

小结91

概念与术语91

风格与习惯92

常见错误93

牛角尖93

练习与自测93

第4章 选择语句95

4.1关系运算96

4.1.1“<”的数学含义及代码含义96

4.1.2 4种关系运算符96

4.1.3常见误区及与常识不符的结果96

4.2 if语句97

4.2.1语法格式及含义97

4.2.2例题97

4.2.3()内的表达式100

4.2.4()后面的语句100

4.3判等运算104

4.4表达复杂的条件106

4.5 if—else语句107

4.6鸡肋——Bool类型(C99)109

4.7判断三角形种类111

4.8显得很有学问的运算符117

4.9大师如是说goto118

4.10给程序更多选项——switch语句119

4.10.1 switch语句的一种应用形式119

4.10.2 switch语句中的break语句122

4.11程序开发的过程124

小结127

概念与术语127

风格与习惯127

常见错误128

牛角尖128

练习与自测129

第5章 从循环到穷举130

5.1造句:当就131

5.1.1语法要素131

5.1.2猴子吃桃问题更简洁的写法133

5.1.3错误的循环变量134

5.1.4次数不定的循环135

5.1.5逗号表达式及其应用136

5.2 do—while语句138

5.2.1语法要素138

5.2.2例题139

5.3 for语句140

5.3.1语法要素140

5.3.2“﹢﹢”之惑142

5.3.3 for语句应用146

5.4不规则的循环及对循环的修整150

5.4.1循环语句中的break语句150

5.4.2 continue语句151

5.5循环的嵌套与穷举法151

5.5.1循环的嵌套151

5.5.2穷举法154

小结157

概念与术语157

风格与习惯158

常见错误158

牛角尖159

练习与自测159

第2篇 结构化程序设计与简单的数据结构161

第6章 最复杂的运算符——“()”162

6.1什么是函数163

6.2步骤1:函数的声明163

6.3步骤2:函数的定义165

6.3.1函数定义的结构165

6.3.2函数定义的位置165

6.3.3函数头的写法、形参165

6.3.4函数体的写法、return关键字166

6.4步骤3:函数的调用167

6.5程序的执行过程168

6.6例题——为什么使用函数170

6.7使用函数小结171

6.7.1使用函数的步骤和方法171

6.7.2常见问题171

6.8函数与结构化程序设计174

6.8.1明确程序功能174

6.8.2确定程序的基本框架175

6.8.3设计数据结构和算法176

6.8.4任务的分解及函数原型178

6.8.5完成函数定义178

6.8.6 编程的步骤180

6.8.7代码结构180

6.9变量的作用域181

6.10递归182

6.10.1什么是递归182

6.10.2递归是函数对自身的调用183

6.10.3 递归的实现过程184

6.10.4递归与循环186

6.10.5递归的力量——Hanoi塔问题187

6.10.6间接递归190

6.11对局部变量的进一步修饰190

6.11.1几乎一直是摆设的关键字——auto191

6.11.2 static类别的局部变量192

6.12使用库函数193

6.13inline关键字(C99)195

小结196

概念与术语196

风格与习惯197

忠告197

牛角尖198

练习与自测198

第7章 作为类型说明符和运算符的“[]”199

7.1使用数组200

7.1.1老式的解决办法200

7.1.2首先要定义数组200

7.1.3如何称呼数组中的各个数据对象200

7.1.4完整的演示201

7.2深入理解数组202

7.2.1数组是一种数据类型202

7.2.2数组定义的含义202

7.2.3数组名是什么203

7.2.4一维数组元素的引用203

7.2.5数组元素引用是一个表达式204

7.2.6数组名有值吗204

7.2.7重复一遍204

7.3熟练应用一维数组205

7.3.1一维数组的遍历205

7.3.2翻卡片问题206

7.3.3筛法207

7.3.4一维数组元素的赋初值208

7.4数组名做实参209

7.4.1数组名的值究竟是什么209

7.4.2对应的形参209

7.4.3调用原理210

7.4.4不可以只有数组名这一个实参210

7.4.5 const关键字211

7.4.6例题——冒泡法排序213

7.4.7测试与调试技巧——使用文件输入输出215

7.5多维数组216

7.5.1二维数组的定义216

7.5.2二维数组元素的赋初值218

7.5.3二维数组元素的引用和遍历218

7.5.4更高维的数组219

7.5.5生命游戏(Game of Life)220

小结225

概念与术语225

风格与习惯226

常见错误226

牛角尖226

练习与自测227

第8章结构体、共用体与位运算228

8.1结构体229

8.1.1从一个简单例题说起229

8.1.2声明结构体的类型230

8.1.3定义结构体变量231

8.1.4结构体数据的基本运算231

8.1.5结构体变量赋初值及成员值的输入问题233

8.1.6结构体“常量”(C99)234

8.1.7一个不太专业的技巧235

8.1.8结构体的其他定义方式及无名的结构体236

8.2C语言中复数类型的历史和现状237

8.2.1借助struct描述的复数类型237

8.2.2-Complex、-Imaginary关键字(C99)238

8.3共用体union240

8.3.1概述240

8.3.2对double类型的解析241

8.4位运算242

8.4.1位运算符243

8.4.2更节省空间的筛法248

8.5“小的变量”——位段251

8.5.1位段概述251

8.5.2如何定义位段252

8.5.3位段的性质252

8.5.4按二进制输出float类型数据252

8.5.5对齐等问题254

小结254

概念254

风格256

常见错误256

忠告256

牛角尖256

练习与自测257

第9章 指针258

9.1指针是什么259

9.1.1指针是一类数据类型的统称259

9.1.2指针是派生数据类型259

9.1.3指针是一类数据的泛称259

9.1.4指针专用的类型说明符——“*”260

9.1.5指针的分类260

9.2指向数据对象的指针260

9.2.1什么是“数据对象”260

9.2.2一元“&”运算261

9.2.3数据指针变量的定义263

9.2.4指针的赋值运算264

9.2.5不是乘法的“*”运算264

9.3指针的应用与误用266

9.3.1指针有什么用266

9.3.2C代码中的“×××到此一游”268

9.3.3分桔子问题268

9.4指针与一维数组270

9.4.1数据指针与整数的加减法270

9.4.2数据指针的减法272

9.4.3数据指针的关系运算272

9.4.4数据指针的判等运算273

9.4.5“[]”运算273

9.4.6数组名是指针274

9.4.7数组名不仅仅是指针275

9.4.8指向数组的指针277

9.4.9与数组名对应的形参278

9.5指针的应用(二)279

9.6高维数组名281

9.6.1高维数组名是指针281

9.6.2高维数组名是内存283

9.6.3“a[0]”或“*a”的含义284

9.6.4数组与指针关系总结285

9.6.5例题285

9.7变量长度数组——VLA(C99)87

9.7.1简述287

9.7.2变量修饰类型(Variably modified type)289

9.7.3变量长度数组与函数参数290

9.8数组类型的字面量(C99)291

9.9指针与结构体292

9.9.1类型问题292

9.9.2通过指针读写结构体的成员293

9.10指针与函数294

9.10.1函数名是指针294

9.10.2指向函数指针的性质295

9.10.3指向函数指针的运算296

9.10.4例题296

9.11指向虚无的指针298

9.12参数不确定的函数299

9.12.1printf()的函数原型299

9.12.2“…”是什么299

9.12.3实现原理299

9.12.4标准形式302

小结303

概念与术语303

常见错误304

风格304

牛角尖304

练习与自测305

第10章 字符串、字符数组及指向字符的指针306

10.1字符串文字量307

10.2字符串的输入与存储309

10.2.1为输入的字符串准备存储空间309

10.2.2 puts()函数310

10.2.3字符数组的初始化310

10.3例题310

10.3.1求字符串长度310

10.3.2比较两个字符串的大小311

10.3.3 scanf中的转换313

10.3.4字符处理库函数316

10.4形参说明符“[]”里的修饰符(C99)316

10.5常用的字符串函数317

10.5.1字符串操作函数317

10.5.2 sscanf、sprintf()函数318

10.5.3 restrict关键字(C99)及memcpy()函数集319

10.5.4字符串转换函数320

10.6main()的参数320

10.6.1指向指针的指针320

10.6.2main()函数的第二种写法321

10.7体现代码优美的数据类型——枚举类型323

小结325

概念325

风格326

常见错误326

牛角尖326

练习与自测326

第3篇 复杂的数据结构、算法及其他话题8

第11章 复杂的数据类型与算法329

11.1 2222=0330

11.2复杂数据类型的构造和解读331

11.2.1数据类型的构造方法331

11.2.2复杂数据类型的解读335

11.2.3添乱的const等类型限定符338

11.2.4 55555=19338

11.3递归、穷举、回溯、排列344

11.3.1 2、9、6能组成多少个两位数344

11.3.2更自然地思考345

11.3.3进一步的抽象和概括347

11.3.4回溯法348

11.3.5排列问题352

11.4更自由地使用内存356

11.4.1 100!=?356

11.4.2老土的办法356

11.4.3动态分配内存函数358

11.4.4改进的方法358

11.4.5 C99中的柔性数组成员(C99)360

11.4.6进一步的思考361

11.4.7用链表解决问题362

11.5 typedef364

小结365

概念365

风格366

常见错误366

忠告366

牛角尖366

练习与自测367

第12章 程序的输入与输出369

12.1面向文件的输入与输出370

12.1.1把程序输出写入文件370

12.1.2C程序怎样读文件374

12.1.3格式化输入、输出的格式375

12.1.4 fprintf()与printf()函数的等效性379

12.2文卷、流、“FILE”及“FILE*”380

12.2.1文卷(File)380

12.2.2流(stream)381

12.2.3“FILE”结构体381

12.2.4FILE381

12.2.5文本流和二进制流382

12.2.6自动打开的流383

12.2.7EOF383

12.2.8其他几个用于文本文卷的I/O函数383

12.3二进制文卷的读写384

12.3.1二进制流384

12.3.2用fwrite()写二进制文卷384

12.3.3用fread()读二进制文卷385

12.3.4feof()函数和ferror()函数386

12.3.5讨论388

12.4定位问题388

12.4.1ftell()函数388

12.4.2fseek()函数388

12.4.3rewind()函数388

12.4.4fgetpos()函数和fsetpos()函数388

12.5制作素数表389

小结392

概念392

常见错误393

风格393

牛角尖393

练习与自测393

第13章 程序组织与编译预处理394

13.1简介395

13.1.1一般特点395

13.1.2预处理的几个阶段395

13.2文件包含396

13.3 Tic-Tac-Toe游戏397

13.3.1分割——思考、手段和意义397

13.3.2总结401

13.3.3回到起点403

13.3.4“走两步”404

13.3.5重复#include的问题405

13.3.6如何处理测试用的代码406

13.3.7再次回到起点408

13.3.8抽象的棋盘408

13.4重新开始409

13.4.1明确任务409

13.4.2程序功能的初步定义409

13.4.3输出411

13.4.4抽签412

13.5宏定义与宏替换416

13.5.1类似对象的宏416

13.5.2把东西都塞到柜子里去417

13.5.3类似函数的宏419

13.5.4显示空的棋盘422

13.6使用外部变量423

13.6.1外部变量423

13.6.2外部变量的应用426

13.7走棋427

13.7.1多态428

13.7.2拼接单词430

13.7.3 static函数432

13.7.4完成“棋手”模块432

13.7.5 抽象棋盘——对封装的模拟434

13.7.6具象棋盘的处理438

13.7.7反省与检讨438

13.8预处理命令的其他话题439

13.8.1再谈宏439

13.8.2其他编译预处理命令441

小结442

概念442

常见错误444

风格444

牛角尖444

练习与自测444

第14章 标准库简介446

14.1使用标准库的一些常识447

14.1.1标准头与标准头文件447

14.1.2使用库的禁忌448

14.1.3并存的宏与函数448

14.1.4函数定义域问题448

14.2对语言的补充449

14.2.1标准定义stddef.h449

14.2.2 iso646.h450

14.2.3 limits.h和float.h450

14.2.4 stdarg.h450

14.2.5 stdbool.h(C99)451

14.2.6 stdint.h(C99)451

14.3stdio.h452

14.3.1数据类型452

14.3.2宏452

14.3.3函数453

14.4通用函数:stdlib.h454

14.4.1数值转换455

14.4.2系列伪随机数生成函数455

14.4.3内存管理函数456

14.4.4环境通信函数456

14.4.5查找与排序函数459

14.4.6整数算术函数460

14.4.7多字节、宽字节字符460

14.5inttypes.h(C99)460

14.6string.h462

14.7数值计算462

14.7.1 math.h(C89)462

14.7.2 math.h(C99)463

14.7.3 complex.h(C99)465

14.7.4 tgmath.h(C99)465

14.7.5 fenv.h(C99)465

14.8错误处理:errno.h466

14.8.1 errno:一个左值466

14.8.2 errno的值467

14.9断言与调试:assert.h468

14.10非本地跳转setjmp.h468

14.11信号处理signal.h470

14.12time.h471

14.13国际化问题475

14.13.1 locale.h475

14.13.2 ctype.h与wctype.h(C99)475

14.13.3 wchar.h476

附录477

附录A C语言的关键字478

附录B C语言的数据类型479

附录C ASCII表480

附录D C语言运算符481

参考文献482

热门推荐