谭浩强C语言入门书籍

Python022

谭浩强C语言入门书籍,第1张

C程序设计(第四版)

【作 者】:谭浩强

【出 版 社】:清华大学出版社

【出版日期】:2012-5-1

【 ISBN 号】:9787302224464

C程序设计(第四版)学习辅导

【图书定价】:28元

【作者】: 谭浩强

【丛书名】: 中国高等院校计算机基础教育课程体系规划教材

【出版社】:清华大学出版社

【ISBN】:9787302226727

【出版日期】:2013 年1月

【开本】:16开

【页码】:268

《c程序设计(第四版)》

第1章程序设计和c语言1

1.1什么是计算机程序1

1.2什么是计算机语言1

1.3c语言的发展及其特点3

1.4最简单的c语言程序5

1.4.1最简单的c语言程序举例6

1.4.2c语言程序的结构10

1.5运行c程序的步骤与方法12

1.6程序设计的任务14

习题15

第2章算法——程序的灵魂16

2.1什么是算法16

2.2简单的算法举例17

2.3算法的特性21

2.4怎样表示一个算法22

2.4.1用自然语言表示算法22

2.4.2用流程图表示算法22

2.4.3三种基本结构和改进的流程图26

2.4.4用ns流程图表示算法28

.2.4.5用伪代码表示算法31

2.4.6用计算机语言表示算法32

2.5结构化程序设计方法34

习题36

第3章最简单的c程序设计——顺序程序设计37

3.1顺序程序设计举例37

3.2数据的表现形式及其运算39

3.2.1常量和变量39

3.2.2数据类型42

3.2.3整型数据44

3.2.4字符型数据47

3.2.5浮点型数据49

3.2.6怎样确定常量的类型51

3.2.7运算符和表达式52

3.3c语句57

3.3.1c语句的作用和分类57

3.3.2最基本的语句——赋值语句59

3.4数据的输入输出65

3.4.1输入输出举例65

3.4.2有关数据输入输出的概念67

3.4.3用printf函数输出数据68

3.4.4用scanf函数输入数据75

3.4.5字符数据的输入输出78

习题82

第4章选择结构程序设计85

4.1选择结构和条件判断85

4.2用if语句实现选择结构87

4.2.1用if语句处理选择结构举例87

4.2.2if语句的一般形式 89

4.3关系运算符和关系表达式91

4.3.1关系运算符及其优先次序91

4.3.2关系表达式92

4.4逻辑运算符和逻辑表达式92

4.4.1逻辑运算符及其优先次序93

4.4.2逻辑表达式94

4.4.3逻辑型变量96

4.5条件运算符和条件表达式97

4.6选择结构的嵌套99

4.7用switch语句实现多分支选择结构102

4.8选择结构程序综合举例105

习题111

第5章循环结构程序设计114

5.1为什么需要循环控制114

5.2用while语句实现循环115

5.3用do…while语句实现循环117

5.4用for 语句实现循环120

5.5循环的嵌套124

5.6几种循环的比较125

5.7改变循环执行的状态125

5.7.1用break语句提前终止循环126

5.7.2用continue语句提前结束本次循环127

5.7.3break语句和continue语句的区别128

5.8循环程序举例131

习题140

第6章利用数组处理批量数据142

6.1怎样定义和引用一维数组142

6.1.1怎样定义一维数组143

6.1.2怎样引用一维数组元素144

6.1.3一维数组的初始化145

6.1.4一维数组程序举例146

6.2怎样定义和引用二维数组148

6.2.1怎样定义二维数组149

6.2.2怎样引用二维数组的元素150

6.2.3二维数组的初始化151

6.2.4二维数组程序举例152

6.3字符数组154

6.3.1怎样定义字符数组154

6.3.2字符数组的初始化155

6.3.3怎样引用字符数组中的元素155

6.3.4字符串和字符串结束标志156

6.3.5字符数组的输入输出159

6.3.6使用字符串处理函数161

6.3.7字符数组应用举例165

习题168

第7章用函数实现模块化程序设计170

7.1为什么要用函数170

7.2怎样定义函数172

7.2.1为什么要定义函数172

7.2.2定义函数的方法173

7.3调用函数174

7.3.1函数调用的形式174

7.3.2函数调用时的数据传递175

7.3.3函数调用的过程177

7.3.4函数的返回值178

7.4对被调用函数的声明和函数原型179

7.5函数的嵌套调用182

7.6函数的递归调用184

7.7数组作为函数参数192

7.7.1数组元素作函数实参193

7.7.2数组名作函数参数194

7.7.3多维数组名作函数参数197

7.8局部变量和全局变量199

7.8.1局部变量199

7.8.2全局变量200

7.9变量的存储方式和生存期204

7.9.1动态存储方式与静态存储方式204

7.9.2局部变量的存储类别205

7.9.3全局变量的存储类别208

7.9.4存储类别小结212

7.10关于变量的声明和定义214

7.11内部函数和外部函数215

7.11.1内部函数215

7.11.2外部函数215

习题218

第8章善于利用指针220

8.1指针是什么220

8.2指针变量222

8.2.1使用指针变量的例子222

8.2.2怎样定义指针变量223

8.2.3怎样引用指针变量224

8.2.4指针变量作为函数参数226

8.3通过指针引用数组230

8.3.1数组元素的指针230

8.3.2在引用数组元素时指针的运算231

8.3.3通过指针引用数组元素233

8.3.4用数组名作函数参数237

8.3.5通过指针引用多维数组245

8.4通过指针引用字符串255

8.4.1字符串的引用方式 255

8.4.2字符指针作函数参数259

8.4.3使用字符指针变量和字符数组的比较263

8.5指向函数的指针266

8.5.1什么是函数指针266

8.5.2用函数指针变量调用函数266

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

8.5.4用指向函数的指针作函数参数270

8.6返回指针值的函数274

8.7指针数组和多重指针277

8.7.1什么是指针数组 277

8.7.2指向指针数据的指针280

8.7.3指针数组作main函数的形参282

8.8动态内存分配与指向它的指针变量285

8.8.1什么是内存的动态分配285

8.8.2怎样建立内存的动态分配285

8.8.3void指针类型 287

8.9有关指针的小结288

习题291

第9章用户自己建立数据类型293

9.1定义和使用结构体变量293

9.1.1自己建立结构体类型293

9.1.2定义结构体类型变量 295

9.1.3结构体变量的初始化和引用297

9.2使用结构体数组300

9.2.1定义结构体数组300

9.2.2结构体数组的应用举例301

9.3结构体指针303

9.3.1指向结构体变量的指针303

9.3.2指向结构体数组的指针304

9.3.3用结构体变量和结构体变量的指针作函数参数306

9.4用指针处理链表309

9.4.1什么是链表 309

9.4.2建立简单的静态链表310

9.4.3建立动态链表311

9.4.4输出链表315

9.5共用体类型317

9.5.1什么是共用体类型317

9.5.2引用共用体变量的方式318

9.5.3共用体类型数据的特点319

9.6使用枚举类型323

9.7用typedef声明新类型名326

习题330

第10章对文件的输入输出331

10.1c文件的有关基本知识331

10.1.1什么是文件331

10.1.2文件名332

10.1.3文件的分类332

10.1.4文件缓冲区333

10.1.5文件类型指针333

10.2打开与关闭文件335

10.2.1用fopen函数打开数据文件335

10.2.2用fclose函数关闭数据文件337

10.3顺序读写数据文件338

10.3.1怎样向文件读写字符338

10.3.2怎样向文件读写一个字符串341

10.3.3用格式化的方式读写文件344

10.3.4用二进制方式向文件读写一组数据345

10.4随机读写数据文件349

10.4.1文件位置标记及其定位349

10.4.2随机读写 352

10.5文件读写的出错检测353

习题354

第11章常见错误分析355

附录370

附录a在visual c++ 6.0环境下运行c程序的方法370

附录b常用字符与ascii代码对照表377

附录cc语言中的关键字378

附录d运算符和结合性378

附录ec语言常用语法提要380

附录fc库函数384

参考文献390

C语言程序设计

链接:https://pan.baidu.com/s/1lz9auia1FNkY8RTHW3g1Zg

 提取码:8uar复制这段内容后打开百度网盘手机APP,操作更方便哦!

若资源有问题欢迎追问~

这是以前看到的一篇文章,感觉很好。不过里面很多说都绝版了上网慢慢找吧

程序员之路——如何学习C语言并精通C语言

程序员之路——如何学习C语言

学习C语言不是一朝一夕的事情,但也不需要花费十年时间才能精通。如何以最小的代价学习并精通C语言是本文的主题。请注意,即使是“最小的代价”,也绝不是什么捷径,而是以最短的时间取得最多的收获,同时也意味着你需要经历艰苦的过程。

一、要读就读好书,否则不如不读

所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,你还可以再次选择。

大名鼎鼎的谭浩强教授出了一本《C语言程序设计》,据说发行量有超过400万,据我所知,很多学校都会推荐这本书作为C语言课本。虽然本人的名字(谭浩宇)跟教授仅仅一字之差,但我是无比坚定地黑他这本书的。这本书不是写给计算机专业的学生的,而是给那些需要考计算机等级考试的其它专业学生看的。这本书的主要缺点是:例子程序非常不专业,不能教给你程序设计应该掌握的思考方式;程序风格相当地不好,会让你养成乱写代码的恶习;错误太多,曾经有人指出过这本书的上百个错误,其中不乏关键的概念性错误。好了,这本书我也不想说太多了,有兴趣大家可以百度一下:)

Kernighan和Ritchie的《The C Programming Language》(中译名《C程序设计语言》)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标准C语言相去甚远,大家一定要看最新的版本,否则不如不看。另外,即使是最经典最权威的书,也没有办法面面俱到,所以手边常备一本《C语言参考手册》是十分必要的。《C语言参考手册》就是《C Reference Manual》,是C语言标准的详细描述,包括绝大多数C标准库函数的细节,算得上是最好的标准C语言的工具书。顺便提一句,最新的《C程序设计语言》是根据C89标准修订的,而《C语言参考手册》描述的是C99标准,二者可能会有些出入,建议按照C99标准学习。还有一本《C和指针》,写得也是相当地不错,英文名是《Pointers on C》,特别地强调指针的重要性,算是本书的一个特点吧。不过这本书并不十分适合初学者,如果你曾经学过C语言,有那么一些C语言的基础但又不是很扎实,那么你可以尝试一下这本书。我相信,只要你理解了指针,C语言便不再神秘。

如果你已经啃完了一本C语言教材,想要更进一步,那么有两本书你一定要看。首先是《C Traps and Pitfalls》(中译名《C陷井与缺陷》),很薄的一本小册子,内容非常非常地有趣。要注意一点,这本书是二十多年前写成的,里面提到的很多C语言的缺陷都已被改进,不过能够了解一些历史也不是什么坏事。然后你可以挑战一下《Expert C Programming》(中译名《C专家编程》),书如其名,这本书颇具难度,一旦你仔细读完并能透彻理解,你便可以放心大胆地在简历上写“精通C语言”了。

切记一个原则,不要读自己目前还看不懂的书,那是浪费生命。如果你看不懂,那你一定是缺失了某些必需基础知识。此时,你要仔细分析自己需要补充哪些内容,然后再去书店寻找讲述的这些内容的书籍。把基础知识补充完毕再回头来学习,才会真正的事半功倍。

二、Unix/Linux还是Windows,这是个很大的问题

不同的编程环境会造就出不同思维的程序员。Windows的程序员大多依赖集成开发环境,比如Visual Studio,而Unix程序员更加钟爱Makefile与控制台。显而易见,集成开发环境更容易上手,在Windows上学习C语言,只需要会按几个基本的Visutal C++工具栏按钮就可以开始写Hello, World!了,而在Unix下,你需要一些控制台操作的基本知识。有人也许认为Unix的环境更简洁,但习惯的力量是很大的,大家都很熟悉Windows的基本操作,而为了学习C语言去专门装一个Unix系统,似乎有点不划算。

对于一个只懂得Windows基本操作、连DOS是什么都不知道的新手而言,尽快做一些有趣而有意义的事情才是最重要的。用C语言写一个小程序远比学习ls、cat等命令有趣,况且我们要专注于C语言本身,就不得不暂时忽略一些东西,比如编译链接的过程、Makefile的写法等等等等。

所以我建议初学者应该以Visual C++ 6.0(不是VisualC++ .NET)或者Dev C++作为主要的学习环境,而且千万不要在IDE的使用技巧上过多纠缠,因为今后你一定要转向Unix环境的。Visual C++ 6.0使用很方便,调试也很直观,但其默认的编译器对C标准的支持并不好,而Dev C++使用gcc编译器,对C99的标准都支持良好。使用顺带提一下,很多大学的C语言课程还在使用Turbo C 2.0作为实验环境,这是相当不可取的,原因其一是TC 2.0对C标准几乎没有支持,其二是TC 2.0编译得到的程序是16位的,这对今后理解32位的程序会造成极大的困扰(当然,用djgpp之类的东西可以使TC 2.0编译出32位程序,不过那过于复杂了)。

等你学完一本C语言的教材,你一定要转向Unix平台继续学习,几乎所有的C语言高级教程都是基于Unix平台的(比如《C专家编程》)。转变的过程是痛苦的,你需要面对的是各种纷繁复杂的命令,完全不同于Windows平台的思考方式,但是这种痛苦是值得的。Unix与C是共生的,Unix的思考方式和习惯更加符合C语言的思考方式和习惯。在Unix下,你可以找到无数优秀的源代码供你尽情阅读,你可以方便地查看某个库函数的联机手册,还可以看到最优秀的代码风格

归结起来就是一句话:初学C语言,建议使用Windows系统和集成开发环境,在准备向“高手”方向努力时,请先转向Unix平台。

三、万事俱备,你就是东风

书已选定,环境配置完成,正所谓万事俱备,只欠你自己的努力了。请从书的前言开始,仔细地阅读手头的教材,很多人看书喜欢直接从第一章开始看,这是错误的做法。前言是作者对整本书的大体介绍,作者一般会告诉你需要什么基础才能够顺利阅读本书,这可以帮助你检验自己的基础知识是否已经具备。看完前言,还要浏览一下目录,了解一下书的整体结构,顺便给自己安排一下学习计划。

学习C语言,必需注意每一个细节,书上的例子代码一定要自己亲自敲一遍,编译执行输出都跟书上说的一致才能算是学完了一个例子,如果不一致,就要仔细找原因。出了书本上有的例子,自己还要“创造”一些例子,比如学习运算符优先级的时候,可以写几个相同的表达式,在不同的位置加上括号,看看有哪些不同的行为,比如*p++和(*p)++,又比如a = b == c、(a = b) == c和a = (b == c)等等。自己抄的书上的例子以及改造之后的例子,还有自己“创造”的例子,都应该仔细地归类保存,并且要在源代码中写上简短的注释,阐述这个例子的意图。

例子之后就是习题了,我建议初学者把所有的习题都独立做一遍,然后对照答案的代码,看看自己的代码有那些不足,再试着修改自己的代码。很多人不重视习题,这是极大的错误,因为作者通常会在习题中说明一些重要的道理,而不是单纯地检验前面的知识。

也许你认为这样学习太慢,其实不然。学得细致就不用走回头路,等你学到后面才发现自己前面没搞清楚,那才是真的得不偿失。一般说来,整本书读完,你应该完成数千行乃至上万行的代码,无论是原封不动照抄书上的,还是自己心血来潮写就的,都是今后继续学习的一笔财富。以我自己举例,阅读《Windows核心编程》时(我只阅读了3/4的内容),除了抄书上的代码,还自己写了很多例子,一共有5574行(用unix下的wc工具统计),时隔多日,我早已记不清Windows的系统编程了,但只要花几分钟翻出以前的代码看看,便会重新了然于胸。所谓好记性不如烂笔头,就是这个道理。

仔细读书、认真抄写源代码、独立完成习题外加更进一步的实验,最后将所有的代码留下,成为自己的经验和财富,绝对的辛苦,也绝对的事半功倍。当然,这种方式只适合学习需要精通的技术,如果不是学习C语言,你还要具体情况具体分析。

写到最后,还有非常非常重要的一点没有提及——代码风格,从最开始学习就必须强迫自己模仿最优秀的代码风格