图书介绍

C语言的科学和艺术【2025|PDF下载-Epub版本|mobi电子书|kindle百度云盘下载】

C语言的科学和艺术
  • (美)罗伯茨著 著
  • 出版社: 北京:机械工业出版社
  • ISBN:9787111347750
  • 出版时间:2011
  • 标注页数:538页
  • 文件大小:105MB
  • 文件页数:560页
  • 主题词: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.1计算简史1

1.2什么是计算机科学4

1.3计算机硬件简介5

1.3.1 CPU5

1.3.2内存6

1.3.3辅助存储器6

1.3.4 I/O设备6

1.4算法7

1.5程序设计语言和编译7

1.6编程错误和调试9

1.7软件维护10

1.8软件工程的重要性11

1.9关于C程序设计语言的一些思考11

小结12

复习题12

第一部分 C语言程序设计基础16

第2章 通过例子学习16

2.1 “Hello world”程序17

2.1.1注释17

2.1.2库包含18

2.1.3主程序18

2.2两个数的加法程序20

2.2.1输入阶段21

2.2.2计算阶段23

2.2.3输出阶段23

2.3有关程序设计过程的观点24

2.4数据类型25

2.4.1浮点型数据25

2.4.2字符串类型的数据26

2.5表达式28

2.5.1常量28

2.5.2变量29

2.5.3赋值语句31

2.5.4运算符和操作数32

2.5.5整型数和浮点型数的结合33

2.5.6整数除法和求余运算符34

2.5.7优先级34

2.5.8优先级法则的应用36

2.5.9类型转换37

小结39

复习题40

程序设计练习41

第3章 问题求解44

3.1程序设计习语和范例44

3.1.1复合赋值习语45

3.1.2自增和自减运算符47

3.2解决规模稍大的问题47

3.3控制语句48

3.3.1重复N次习语49

3.3.2迭代和循环50

3.3.3下标变量50

3.3.4初始化的重要性51

3.3.5读入-直到-标志习语53

3.3.6创造一个更实用的应用程序54

3.3.7条件执行和if语句56

3.4一个调试练习58

3.5格式化输出61

3.5.1 printf的格式码62

3.5.2控制空格、对齐方式和精度63

3.6构思一个程序65

3.6.1程序设计风格66

3.6.2设计时考虑将来的修改67

3.6.3 #define机制67

小结69

复习题69

程序设计练习70

第4章 语句形式74

4.1简单语句74

4.1.1赋值的嵌套76

4.1.2多重赋值76

4.1.3程序块77

4.2控制语句78

4.3布尔型数据78

4.3.1关系运算符79

4.3.2逻辑运算符79

4.3.3简化求值81

4.3.4标志82

4.3.5避免布尔表达式中的冗余82

4.3.6布尔计算示例83

4.4 if语句84

4.4.1单行if语句85

4.4.2多行if语句86

4.4.3 if/else语句86

4.4.4级联if语句86

4.4.5?:运算符(可选的)87

4.5 switch语句89

4.6 while语句91

4.6.1 while循环的应用91

4.6.2无限循环93

4.6.3解决半途退出问题93

4.7 for语句95

4.7.1嵌套的for循环97

4.7.2 for和while的关系98

4.7.3 for语句中浮点型数据的使用问题99

小结100

复习题101

程序设计练习102

第5章 函数105

5.1使用库函数105

5.2函数声明107

5.3自己编写函数108

5.3.1 return语句109

5.3.2将函数与主程序放在一起110

5.3.3包含内部控制结构的函数111

5.3.4返回非数字值的函数113

5.3.5谓词函数113

5.3.6测试字符串是否相等的谓词函数115

5.4函数调用过程机制116

5.4.1参数传递117

5.4.2在其他函数中调用函数119

5.5过程125

5.6逐步精化127

5.6.1从顶开始127

5.6.2实现PrintCalendar128

5.6.3实现PrintCalendarMonth128

5.6.4完成最后的片段132

小结137

复习题138

程序设计练习138

第6章 算法143

6.1测试素数144

6.1.1一个IsPrime的简单版本144

6.1.2验证一个策略是否表示一个算法144

6.1.3说明IsPrime算法的正确性145

6.1.4改进算法的效率146

6.1.5在各个可选方案中选择148

6.2计算最大公约数149

6.2.1 brute-force算法149

6.2.2欧几里得算法150

6.2.3欧几里得算法的正确性说明(可选)150

6.2.4比较GCD算法的效率151

6.3数值算法151

6.3.1连续逼近152

6.3.2报告错误153

6.4级数展开154

6.4.1 Zeno悖论154

6.4.2用级数展开法设计平方根函数156

6.4.3估计平方根的泰勒级数展开(可选)156

6.4.4泰勒级数近似的实现157

6.4.5停留在收敛半径之内159

6.5指定数值类型的大小161

6.5.1整数类型161

6.5.2无符号类型162

6.5.3浮点类型162

小结163

复习题163

程序设计练习164

第二部分 库和模块化开发170

第7章 库和接口:一个简单的图形库170

7.1接口的概念171

7.2图形库介绍172

7.2.1 graphics.h的基本模型173

7.2.2 graphics.h接口的函数174

7.2.3软件包初始化178

7.2.4画直线178

7.2.5画圆和弧179

7.2.6获取有关图形窗口的信息181

7.3建立自己的工具182

7.3.1定义DrawBox182

7.3.2定义DrawCenteredCircle184

7.3.3绝对坐标和相对坐标间的切换184

7.3.4定义过程的好处185

7.4解决一个较大的问题185

7.4.1使用逐步精化186

7.4.2实现DrawHouse过程187

7.4.3寻找共同的模式188

7.4.4结束分解189

小结193

复习题194

程序设计练习195

第8章 设计接口:一个随机数库200

8.1接口设计201

8.1.1同一主题的重要性201

8.1.2简单性和信息隐藏的原则202

8.1.3满足客户的需要202

8.1.4通用工具的优势203

8.1.5稳定性的价值203

8.2用计算机生成随机数204

8.2.1确定行为与非确定行为204

8.2.2随机数和伪随机数204

8.2.3 ANSI C中生成伪随机数205

8.2.4改变随机数的范围206

8.2.5将此问题通用化210

8.3在库中保存工具212

8.3.1接口的内容212

8.3.2写random.h接口213

8.3.3 random.c的实现214

8.3.4构造客户程序215

8.3.5初始化随机数发生器217

8.4评价random.h接口的设计219

8.4.1产生随机实数220

8.4.2模拟一个概率事件220

8.4.3在接口中包含头文件221

8.4.4完成随机数软件包的实现231

8.5使用随机数软件包222

小结225

复习题226

程序设计练习226

第9章 字符串和字符233

9.1枚举的原理234

9.1.1在机器内部表示枚举类型234

9.1.2将枚举类型表示为整数235

9.1.3定义新的枚举类型235

9.1.4枚举类型的操作237

9.1.5标量类型238

9.2字符238

9.2.1数据类型char238

9.2.2 ASCII代码239

9.2.3字符常量240

9.2.4 ASCII代码方案的重要特性240

9.2.5特殊字符241

9.2.6字符运算242

9.2.7 ctype.h接口243

9.2.8涉及字符的控制语句244

9.2.9字符的输入输出245

9.3字符串作为抽象数据类型245

9.3.1分层抽象246

9.3.2抽象类型的概念247

9.4 strlib.h接口247

9.4.1确定字符串的长度248

9.4.2从一个字符串中选择字符248

9.4.3连接249

9.4.4将字符转换为字符串250

9.4.5抽取字符串的一部分250

9.4.6比较两个字符串251

9.4.7在一个字符串内搜索252

9.4.8大小写转换255

9.4.9数值转换255

9.4.10效率和strlib.h库257

小结257

复习题258

程序设计练习260

第10章 模块化开发264

10.1 Pig Latin——一个模块化开发的案例研究266

10.1.1应用自顶向下的设计266

10.1.2使用伪代码267

10.1.3实现TranslateLine268

10.1.4考虑空格和标点符号的问题268

10.1.5精化单词的定义270

10.1.6设计记号扫描器271

10.1.7完成TranslateLine的实现272

10.1.8定义扫描器模块接口274

10.2在模块中维护内部状态276

10.2.1全局变量276

10.2.2使用全局变量的危险性277

10.2.3保持变量的模块私有化277

10.2.4初始化全局变量278

10.2.5私有函数279

10.3实现扫描器抽象280

小结286

复习题286

程序设计练习286

第三部分 复合数据类型294

第11章 数组294

11.1数组295

11.1.1数组声明295

11.1.2数组选择296

11.1.3一个简单的数组实例297

11.1.4改变下标值的范围298

11.2数据的内部表示法299

11.2.1比特、字节和字299

11.2.2内存地址300

11.2.3运算符sizeof301

11.2.4变量的内存分配301

11.2.5引用超出数组范围的元素302

11.3数组作为参数进行传递303

11.3.1元素个数的通用化304

11.3.2数组参数传递机制306

11.3.3实现函数PrintIntegerArray和GetIntegerArray308

11.3.4实现函数ReverseIntegerArray309

11.3.5实现函数SwapIntegerElements310

11.4使用数组制作表格314

11.5数组的静态初始化320

11.5.1自动确定数组大小320

11.5.2确定初始化数组的大小321

11.5.3初始化数组和标量类型321

11.6多维数组321

11.6.1向函数传送多维数组322

11.6.2初始化多维数组323

小结324

复习题324

程序设计练习326

第12章 查找和排序332

12.1查找332

12.1.1在整数数组中查找333

12.1.2关于查找的另一个更复杂的例子335

12.1.3线性查找337

12.1.4二分查找338

12.1.5查找算法的相对效率339

12.2排序341

12.2.1对一个整数数组排序342

12.2.2选择排序算法343

12.2.3选择排序效率的评估346

12.2.4测试程序的运行时间347

12.2.5选择排序的算法分析347

小结348

复习题348

程序设计练习349

第13章 指针354

13.1将地址作为数据值355

13.2 C语言的指针操作356

13.2.1在C语言中声明指针变量356

13.2.2基本的指针操作357

13.2.3特殊指针NULL359

13.3通过引用传递参数359

13.3.1设计函数SwapInteger361

13.3.2用引用调用返回多个结果362

13.3.3过度使用引用调用的危险364

13.4指针和数组364

13.4.1指针运算365

13.4.2运算符++++和--的新作用367

13.4.3指针的自增和自减369

13.4.4指针和数组的关系369

13.5动态分配371

13.5.1 Void*类型371

13.5.2动态数组372

13.5.3查找malloc中的错误373

13.5.4释放内存374

小结374

复习题375

程序设计练习377

第14章 再论字符串381

14.1 string类型的概念表示381

14.1.1字符串作为数组382

14.1.2字符串作为指针384

14.1.3字符串作为抽象类型384

14.1.4字符串参数385

14.1.5字符串变量385

14.1.6指针和数组变量间的区别387

14.1.7决定字符串的表示方法388

14.2 ANSI字符串库389

14.2.1 strcpy函数390

14.2.2 strncpy函数392

14.2.3 strcat和strncat函数393

14.2.4 strlen、strcmp和strncmp函数394

14.2.5 strchr、strrchr和strstr函数394

14.2.6 ANSI字符串函数的应用395

14.3 strlib库的实现397

14.3.1实现转换函数398

14.3.2 strlib分配函数的实现398

小结400

复习题400

程序设计练习401

第15章 文件404

15.1文本文件404

15.2 C语言中文件的使用406

15.2.1声明FILE*类型的变量406

15.2.2打开文件406

15.2.3执行I/O操作407

15.2.4关闭文件407

15.2.5标准文件408

15.3字符I/O408

15.3.1文件更新410

15.3.2在输入文件中重新读取字符413

15.4面向行的I/O415

15.5格式化I/O417

15.5.1 printf的三种形式417

15.5.2 scanf函数417

15.5.3用scanf读入字符串419

15.5.4格式化I/O的一个实例420

15.5.5使用scanf的局限423

小结423

复习题424

程序设计练习425

第16章 记录431

16.1数据记录的概念432

16.2记录在C语言中的使用432

16.2.1定义一个结构类型433

16.2.2声明结构变量433

16.2.3记录选择434

16.2.4记录初始化434

16.2.5简单记录434

16.3数组与记录的结合435

16.4记录的指针437

16.4.1定义一个指向记录类型的指针438

16.4.2为记录数据分配空间439

16.4.3对记录指针进行操作440

16.5创建记录的数据库440

16.5.1创建员工信息数据库441

16.5.2数据库的使用443

16.6基于记录的应用程序设计444

16.6.1使用数据库的重要性444

16.6.2问题的框架445

16.6.3设计内部表示445

16.6.4设计外部结构447

16.6.5程序代码448

16.6.6数据驱动设计方法的重要性455

小结455

复习题458

程序设计练习458

第17章 深入学习465

17.1递归465

17.1.1递归的简单说明466

17.1.2 Factorial函数467

17.1.3递归信任471

17.1.4递归范例472

17.1.5排列的生成472

17.1.6用递归的思想思考475

17.2抽象数据类型475

17.2.1队列抽象476

17.2.2以队列抽象表示类型476

17.2.3 queue.h接口478

17.2.4实现队列抽象479

17.2.5队列抽象的另一种实现方法484

17.3算法分析486

17.3.1评估算法效率487

17.3.2 O标记487

17.3.3再看选择排序488

17.3.4分而治之策略489

17.3.5合并两个数组490

17.3.6合并排序算法491

17.3.7合并排序的计算复杂性492

17.3.8比较平方复杂性与MogN复杂性的性能493

小结493

复习题494

程序设计练习495

附录501

附录A C语言的语法和结构总结501

附录B 库源代码517

热门推荐