Ⅰ 学习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语言,你还要具体情况具体分析。
写到最后,还有非常非常重要的一点没有提及——代码风格,从最开始学习就必须强迫自己模仿最优秀的代码风格
数学不好怎么办?
答案:学!
英语不会怎么办?
答案:学!
编程零基础怎么办?
答案:从零学起!
等你学成功后回头看看那些一无所成的人,他们总是在说我这里不行,我那里基础差,我没时间学等等……
失败的人总是找借口,成功的人总是找方法。
失败的人总是碰到问题,成功的人总是发现问题。
方法:每个人都有自已的方法,认真去学总能找到方法.
Coding一般的小东西还可以,若去设计算法什么的没有数学不行,如要交流不会英语不行(名校的开放课程全是英语,没人给你翻译)。如果想在软件界发展下去,必须学习数学和英语。
Ⅱ 新手学习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语言”了。
切记一个原则,不要读自己目前还看不懂的书,那是浪费生命。如果你看不懂,那你一定是缺失了某些必需基础知识。此时,你要仔细分析自己需要补充哪些内容,然后再去书店寻找讲述的这些内容的书籍。把基础知识补充完毕再回头来学习,才会真正的事半功倍。
Ⅲ 如何学好C语言
所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,你还可以再次选择。没有学习交流地方可以来
所以我建议初学者应该以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语言,你还要具体情况具体分析。
写到最后,还有非常非常重要的一点没有提及──代码风格,从最开始学习就必须强迫自己模仿最优秀的代码风格。因为代码风格太重要内容也太多,我会用专门的一篇文章来详细讨论,请大家关注《程序员之路──关于代码风格》。
题目是关于C语言,其实我主要想说说程序该怎么学,或者一点感悟罢了,在这里,我只想引用身边的几个人的例子,来谈一下对程序学习的理解
第一个人要说到我了,我对程序产生兴趣,是听说程序可以作游戏,那时候是在初一,然而借来一本G-BASIC简明教材后,我便傻了眼。
陌生的词汇,古怪的逻辑,都是些天文的中文译本,头疼了好一阵子。
然而当时又没有别的闲书可看,我就整天捧着那一本书,什么方法都试过了,甚至倒着看过了,都没看出什么眉目,自己又没有电脑,只能不停地大胆地想象,然后满脑子的疑惑……
在这里停一下,上面说的便是我学习的风格:总要经历一番波折,瞎折腾几下,然后才会有偶然间的明悟-开窍了!我甚至没见过几个人有我这么笨,现在明白过来了,我总是一开始把事情想得过于复杂,造成狗咬刺猬的难堪的局面,然而竟然有意想不到的收获!但是不建议大家模仿这种风格,起码追女朋友的时候不能这样,生活中很多机会在于接手的那一瞬间,失去就永远找不回来了。
现在回来,后来偶然间,我看懂了一行代码,是print 语句,当时兴奋得要命,又仔细看了这个看了那个,一下子看懂了很多东西,像是在霎那间被什么给击中似的,立刻间醍醐灌顶。。。。
初三在学校学了FOXBASE,基本上自学的,我发现了一件奇怪的事,我这人是出了名的记性不好,然而当时背程序中的命令却是过目不忘,到现在还记得很多,也许是感兴趣吧,也感谢我的微机老师给我提供自由上机的机会!后来我又自学了QBASIC,初四暑假又学了一点C,那时学C遇到不少困难,当时我们学校机房连C语言都没有,我只好闷在家里,一本二级C教材,一本配套习题,整天发呆地想,把自己的脑袋当电脑cpu使,有时进入死循环,有时又彻底崩溃。我花十几天看完了一本书,做完了一本题,然而脑袋里充满了疑惑,由于没有上机实践的机会,我就凭自己的猜测与推理己慢慢建立了一大堆理论,十分得意与自信,但后来证明大部分是错的,害我花了很长时间去纠正,这是后话。可是,还是那句话不破不立,不阻不行。就像我现在有了电脑,整天泡在互联网的海洋里,感受着快餐文化,好久都没静下心来好好想点东西了.
高中还上过几节电脑课,只不过忙于应付高考,我将学程序的打算放弃了,到这里我该说下一个人了。
高中时坐我旁边一女生,她的文曲星里有BASIC,我偶尔拿过来编了几个小程序玩,她看到后很感兴趣,令人惊讶的是,她只看了三五个程序,听我讲了几个命令的功能,就能根据自己的想象编出小动画来,她此前是绝没有学过程序的!我曾一度怀疑过她的智商,然而她程序是如此之快,却让我的眼都瞪大了好几圈,比我当年高了好几个境界!我后来经常在想,是不是我当时的方法不对,程序到底应该怎样学。。。
一晃就到了大学,我碰到另一个让我佩服的人,跟我一样是学计算机的,他是偶尔看到我在编动画,然后十分感兴趣,便开始自学。他令人吃惊的是,指针,结构体,位运算等等,都没搞懂(更不用说算法和数据结构),只学了三种程序结构,现在只学了C半年,便自己能编出贪吃蛇,俄罗斯方块,扫雷,还有很多叫不出名字的小游戏来,现在又在写黑白棋,我知道我确实是走了不少弯路。
程序应该怎样学,对C来讲,我觉得应该从画图学起。
原因有二。
一,画图程序很能振奋人心的,它能带给你浓厚的兴趣,这是学程序的关键。
二,画图程序容易上手,很简单的道理,就能做出很漂亮的东西来。有很多东西甚至不用看课本,就能自己推出来(我认为推理的方法很重要,它是你自学的必要条件)。
比如画一个圆,从数学角度来分析,要确定一个圆,只需知道它的圆心(x,y)与半径r,那好一个圆就画出来了,circle(x,y,r);
其它的类推,再画一个立体的,选择立方体,再分析,只要知道两个对角的坐标就行了吧,翻一下课本,不是这样,为什么?你或许会想到,电脑屏幕本来就是平面的,用立体坐标的理论在这里,恐怕就不是最简单的方法。所以它采用的应该是两个平面图形平移。此处留下疑问,立体图形在平面坐标中怎么表示?自己慢慢研究,很浅的东西。
想作动画吧,想象一下动画的原理只是从一个图形变幻到另一个图形,不同地变幻就出现动画效果,那就可以画一个,擦了,再画一个新的,再变化。。。
数学功底好的话,从二维到三维,从静态到动态我认为是很快的过渡。
具体该怎么学呢,你可以多找几个画图的例子,敲到电脑里,多敲几个,慢慢地你就会知道哪些东西是干什么的,慢慢地就会自己做出东西来。
但这里不要沉溺太久了,先学画图只是帮助你轻松地入门(很多人C学完了还没有入门)。
从画图里暂时走出来,你应该打打基础了,这里不再赘述。可以边学边实践,物理,数学课本中很多问题都可以用程序来演示,来解决,尝试着多做些东西,这比你老学课本中的模型强多了,只有你自己去体会才能知道。
谈及C语言,我想凡是学过它的朋友都有这样一种感觉,那就是“让我欢喜让我忧。”欢喜的是,C语言功能非常强大、应用广泛,一旦掌握了后,你就可以理直气壮地对他人说“我是电脑高手!”,而且以后若是再自学其他语言就显得轻而易举了。忧虑的是,C语言犹如“少林武功”一般博大精深,太难学了。其实就笔者认为C语言并非是“difficult(困难)”的,只要你能理清思路,掌握它的精髓,那么自学C语言是一件非常容易且又其乐无穷的事。今天本人就与大家一起谈谈如何学习C语言或者说学习C语言应从哪几方面着手。
了解一些基本知识
一.C语言的背景
就个人感触,无论学习哪门语言首先应该了解一下自己所学语言的背景,也可以说它的发展史。
C语言属于高级程序语言的一种,它的前身是“ALGOL”。其创始人是布朗·W·卡尼汉和丹尼斯·M·利奇。C语言问世时是带有很大的局限性,因为它只能用于UNIX系统上。然而随着科学技术的进步,计算机工业的发展,C语言逐渐脱离UNIX。1987年美国标准化协会制定了C语言的国际标准,简称“ANSI C”,从此以后它便成为一种广泛使用的程序语言。C语言的优点很多,主要的有如下四点:
1.兼备高级语言与低级语言的优点,属于一种中间语言。
2.它是一种结构化程序设计语言,非常适合结构化程序设计。
3.有较丰富的数据类型、运算符以及函数供以选用。
4.直接与内存打交道,使修改、编辑其他程序与文档变得轻松,简单。
二.二大语系二种不同的学习方法
笔者学习过很多程序语言,例如:C,C++(C语言的扩展),QBASIC,VB(BASIC的可视化),JAVA,J ,VB,JAVA,ASP,FOXPRO,PERL等等,就本人实践所得,其实高级程序语言分为两大语系。一路是以C为主的程序语言,例如:JAVA,JAVA等,这类语言在函数的调用,程序语句的书写,循环的控制都极为相似。另一路是以BASIC为首的程序语言,例如:FOXPRO,VB等,此类语言同样具有相似的函数调用,程序语句书写以及循环控制,但与C语系是不同的。因此若是您以前是从QBASIC起家的,那么在学习C语言前最好是先洗洗脑,千万不要把学习BASIC的方法以及思路用在C身上。
讲到这里,我想大家对C语言一定有了感性认识吧!下面让我们再升华一下,全方位亲密接触它。学习C语言必须从以下四点入手,也就是说,只要你能掌握这四点的内容,那么基本上就大功告成了。
怎样才能学好c语言
有人问我c语言是不是很难学,我说不是,后来问的人多了,我就萌生了写一篇关于c语言如何入门的文章的念头来。
其实c语言很简单,它只是一种交流的规则,一种表达的工具,一种承载思想的容器而已,之所以感觉难,我觉得是还不习惯使用计算机特点来考虑问题。这就好比中国人从到英国定居一样,虽然你学过英语,但是那只是想象中的英国,和现实的英国的情况还相差很远,所以要有一个适应的过程,也就是常说的过渡期或磨合期。
想尽快上手就得掌握计算机的特点,计算机的特点包括:
1、 计算机在问题的处理方式上要求全,将所有的可能都要告诉它。人可以根据习惯忽略一些东西,但计算机不行。比如说求解一元二次方程,我们考虑问题就已经默认了a不等于0,更有甚者把b方减4ac也默认大于等于零了。这是我们的习惯,既然有解,我们一般习惯上就把它定为实数解,所以你做出来的程序一般是不考虑这两个条件的,但是计算机不行,计算机是有名的弱智。计算机没有象人一样的智能处理能力,它是人忠实的信徒,不管你怎么想,它都会执行你的命令。由于你的习惯,导致一些别有用心的人或者无意犯错的人来犯错误,致使计算机有时无所适从。很疲惫,甚至崩溃,报错,造成你的程序是不成功的,所以你感觉很难。
2、 计算机要求程序的描述精确,无二义性。人的语言有很强的随机性和二义性。我们平时说话时,有时是一些招呼,有时说话的逻辑性可以不太清楚,话既可以表达这样的意思,也可以表达那样的意思,人可以根据环境和对方想表达的含义进行分析,最终得到正确的结果,但是计算机很弱智,虽然它很听话,但是他不能理解你表达的思想,只会按你交给的指令执行,这样导致执行时报警和出错。
3、 计算机编程是要求有很强的全局性和逻辑性,不存在起伏的问题。人的思维有很强的活跃期和蛰伏期,计算机不会,它随时待命。人在考虑问题时,有很多尽兴的东西,但这不是处理问题的整体,而是一部分,所以就出现做完一段代码后,就不愿意再写,或感觉很吃力,所以感觉很难。
计算机要求它的主人,考虑问题要全面,所有可能的情况及处理都要告诉它,要求学会沉稳,心态要稳定,要求交流的语句一定要明了含义单一。
怎样才能很快的学会c语言,更快的度过磨合期呢?C语言的语法规则记忆理解当然是不可少的,除此之外还应注意以下几个方面:
1、 好好理解一下变量和函数的概念,至少要重新回头看看初等数学。这是基础,否则就会先天不足,你学的再好,也成不了大气候。
2、 平衡心态,虽然不能做到“不以物喜,不以己悲”的水平,但至少不要浮躁,不要急于求成,欲速则不达。
3、 培养自身的全局意识,既能小无内,也能大无外,才行。
4、 严格按照程序设计过程设计程序,不要跳脱,天马行空,没有规矩是不成方圆的。
5、 努力提高自身的综合素质。程序是人思维的表达形式,是人处理问题思路和语言的结合体。你对客观看成到什么程度和你掌握的知识成正比。如果你对处理的问题不理解,不会处理,你怎么也写不出程序。
6、 学会交流,多交流,相互补益,同时团队合作也是很重要的。
总之,实践出真知,多学、多练、多思、多交流,勤奋好学才能学成。
Ⅳ C语言函数参考手册的目录
第1章 动态内存管理函数:alloc.h 1
1.1 brk()——重置数据段存储空间函数 2
1.2 coreleft()——获取未使用内存大小
函数 3
1.3 farcalloc()——申请远堆空间函数 4
1.4 farcoreleft()——获取远堆空闲存储
空间大小函数 5
1.5 farfree()——释放远堆空间函数 6
1.6 farmalloc()——申请远堆空间函数 6
1.7 farrealloc()——远堆存储块空间调整
函数 7
1.8 sbrk()——增加数据段存储空间函数 8
第2章 DEBUG相关函数库:
assert.h 10
assert()——错误判断函数 11
第3章 BIOS相关函数库:bios.h 12
3.1 bioscom()——串行I/O通信函数 13
3.2 biosdisk()——软硬盘I/O函数 14
3.3 biosequip()——检查设备函数 15
3.4 bioskey()——键盘接口函数 16
3.5 biosmemory()——获取存储块大小
函数 18
3.6 biostime()——设置bios时间函数 19
第4章 控制台输入/输出函数库:
conio.h 21
4.1 cgets()——从控制台输入字符串
函数 22
4.2 clreol()——清除字符到行末函数 22
4.3 clrscr()——清除文本模式窗口函数 23
4.4 cprintf()——格式化输出到屏幕
函数 24
4.5 cputs()——字符串输出到屏幕函数 25
4.6 cscanf()——格式化输入函数 26
4.7 delline()——删除行函数 27
4.8 getch()——无回显字符输入函数 28
4.9 getche()——有回显字符输入函数 28
4.10 getpass()——以密码形式输入
函数 29
4.11 gettext()——文本复制函数 30
4.12 gettextinfo()——获取文本模式的
屏幕信息函数 31
4.13 gotoxy()——设置光标函数 32
4.14 highvideo()——高亮显示文本
函数 33
4.15 insline()——插入空行函数 34
4.16 kbhit()——检查键盘按键函数 35
4.17 lowvideo()——低亮显示文本
函数 36
4.18 movetext()——移动屏幕文本
函数 37
4.19 normvideo()——正常亮显示文本
函数 38
4.20 putch()——字符输出函数 39
4.21 puttext()——文本复制函数 40
4.22 textattr()——设置文本属性函数 41
4.23 textbackground()——文本背景色
选择函数 42
4.24 textcolor()——文本字符颜色选择
函数 43
4.25 textmode()——文本模式设置函数 43
4.26 ungetch()——把字符退回键盘缓冲
区函数 44
4.27 wherex()——返回水平光标位置
函数 45
4.28 wherey()——返回垂直光标位置
函数 46
4.29 window()——定义活动文本窗口
函数 47
第5章 字符函数库:ctype.h 49
5.1 isascii()——判断字符是否为ASCII码
函数 50
5.2 isalnum()——判断字符是否为字母或
数字函数 50
5.3 isalpha()——判断字符是否为英文
字母函数 51
5.4 iscntrl()——判断字符是否为控制
字符函数 52
5.5 isdigit()——判断字符是否为十进制
数字函数 53
5.6 isgraph()——判断字符是否为除空格
外的可打印字符函数 54
5.7 islower()——判断字符是否为小写
英文字母函数 55
5.8 isprint()——判断字符是否为可打印
字符(含空格)函数 56
5.9 ispunct()——判断字符是否为标点
符号函数 57
5.10 isspace()——判断字符是否为空白
字符函数 57
5.11 isupper()——判断字符是否为大写
英文字母函数 58
5.12 isxdigit()——判断字符是否为十六
进制数字函数 59
5.13 toascii()——将字符转换为ASCII码
函数 60
5.14 tolower()——将字符转换为小写
英文字母函数 61
5.15 toupper()——将字符转换为大写
英文字母函数 62
第6章 目录操作函数库:dir.h 63
6.1 chdir()——更改当前工作目录函数 64
6.2 findfirst()——搜索当前磁盘目录
函数 65
6.3 findnext()——搜索磁盘下一个匹配的
文件函数 66
6.4 fnmerge()——构造完整路径函数 66
6.5 fnsplit()——拆分路径函数 67
6.6 getcurdir()——获取指定驱动器上的
工件目录函数 69
6.7 getcwd()——获取当前工作目录
函数 69
6.8 getdisk()——获取当前磁盘驱动器号
函数 70
6.9 mkdir()——建立目录函数 71
6.10 mktemp()——生成不重复文件名
函数 72
6.11 rmdir()——删除文件目录函数 73
6.12 setdisk()——设置当前工作驱动器
函数 73
6.13 searchpath()——查找文件函数 74
第7章 系统接口函数库:dos.h 76
7.1 allocmem()——DOS分配存储段
函数 77
7.2 bdos()——DOS系统调用函数 78
7.3 country()——返回国家相关信息
函数 79
7.4 ctrlbrk()——设置Ctrl-Break处理
程序函数 80
7.5 delay()——以毫秒为单位的延时
函数 81
7.6 dosexterr()——获取扩展DOS错误
信息函数 82
7.7 dostounix()——把DOS时间转换为UNIX时间 83
7.8 FP_OFF()——获取远指针的偏
移量 84
7.9 FP_SEG()——获取远指针的段
地址 85
7.10 freemem()——释放已分配DOS内
存块函数 86
7.11 getcbrk()——获取Ctrl-Break设置
函数 87
7.12 getdate()——获取DOS日期函数 88
7.13 getdta()——获取磁盘传输地址
函数 89
7.14 gettime()——获取系统时间函数 90
7.15 inport()——从硬件端口中输入一个
字函数 91
7.16 inportb()——从硬件端口中输入
一个字节函数 92
7.17 int86()——通用8086软中断接口
函数 93
7.18 int86x()——增强型通用8086软
中断接口函数 94
7.19 intdos()——通用DOS中断接口
函数 95
7.20 intdosx()——增强型通用DOS中断
接口函数 97
7.21 intr()——改变软中断接口函数 98
7.22 keep()——退出并继续驻留函数 99
7.23 MK_FP()——远指针合成 100
7.24 nosound()——关闭PC扬声器
函数 101
7.25 outport()——从硬件端口中输出
一个字函数 102
7.26 outportb()——从硬件端口中输出
一个字节函数 103
7.27 parsfnm()——分析文件名函数 104
7.28 peek()——从存储单元读一个字
函数 105
7.29 peekb()——从存储单元读一个字节
的函数 106
7.30 poke()——存一个字到给定存储
单元函数 108
7.31 pokeb()——存一个字节到给定
存储单元函数 109
7.32 randbrd()——随机块读函数 110
7.33 randbwr()——随机块写函数 111
7.34 segread()——读段寄存器值函数 112
7.35 setblock()——修改DOS分配地址
函数 113
7.36 setcbrk()——设置Ctrl-Break
函数 114
7.37 setdate()——设置DOS日期函数 115
7.38 settime()——设置DOS时间函数 116
7.39 setdta()——设置磁盘传输地址
函数 117
7.40 sleep()——以秒为单位的延时
函数 118
7.41 sound()——打开PC扬声器函数 119
7.42 unixtodos()——把UNIX时间转换
为DOS时间函数 120
第8章 浮点数据处理函数库:
float.h 122
8.1 _clear87()——清除状态字函数 123
8.2 _control87()——设置控制字函数 124
8.3 _status87()——获取浮点处理器状态
值函数 125
第9章 图形处理函数库:
graphics.h 126
9.1 arc()——画弧线函数 127
9.2 bar()——绘制二维条形图函数 128
9.3 bar3d()——绘制三维条形图函数 129
9.4 circle()——画圆函数 130
9.5 cleardevice()——清除图形屏幕
函数 131
9.6 clearviewport()——清除图形视区
函数 132
9.7 closegraph()——关闭图形系统
函数 133
9.8 detectgraph()——通过检测硬件确定
图形驱动程序和模式函数 134
9.9 drawpoly()——绘制多边形函数 134
9.10 ellipse()——绘制椭圆函数 135
9.11 fillellipse()——绘制并填充椭圆
函数 137
9.12 fillpoly()——绘制多边形并填充
函数 138
9.13 floodfill()——填充有界区域
函数 139
9.14 getarccoords()——取得最后一次
调用画弧线坐标函数 140
9.15 getaspectratio()——获取当前图形
模式的纵横比函数 141
9.16 getbkcolor()——获取当前背景颜色
函数 142
9.17 getcolor()——获取当前画线颜色
函数 143
9.18 getdefaultpalette()——返回默认
调色板函数 144
9.19 getdrivername()——获取图形驱动
程序名函数 145
9.20 getfillpattern()——获取用户定义的
填充模式函数 146
9.21 getfillsettings()——获取填充模式和
填充颜色函数 147
9.22 getgraphmode()——获取当前图形
模式函数 148
9.23 getimage()——将指定区域的位图
调入内存函数 149
9.24 getlinesettings()——获取当前线型、
模式和宽度函数 150
9.25 getmaxcolor()——获取最大颜色
函数 151
9.26 getmaxmode()——获取当前驱动
程序的最大图形模式 152
9.27 getmaxx()——返回屏幕的最大
x坐标函数 153
9.28 getmaxy()——返回屏幕的最大
y坐标函数 154
9.29 getmodename()——获取指定图形
模式的名称 155
9.30 getmoderange()——获取给定图形
驱动程序的模式范围函数 156
9.31 getpixel()——获取指定像素的颜色
函数 157
9.32 getpalette()——获取调色板函数 158
9.33 getpalettesize()——获取调色板的
颜色数函数 159
9.34 gettextsettings()——获取当前图形
文本字体的信息函数 160
9.35 getviewsettings()——获取当前视口
的信息函数 161
9.36 getx()——获取当前图形位置的
x坐标函数 163
9.37 gety()——获取当前图形位置的
y坐标函数 164
9.38 graphdefaults()——将所有图形设置
复位为它们的默认值函数 164
9.39 grapherrormsg()——返回一个错误
信息串的指针函数 165
9.40 _graphfreemem()——用户可修改的
图形存储区释放函数 166
9.41 _graphgetmem()——用户可修改的
图形存储区分配函数 167
9.42 graphresult()——返回最后一次不成功的图形操作的错误代码函数 168
9.43 imagesize()——返回保存位图像
所需的字节数函数 169
9.44 initgraph()——初始化图形系统
函数 170
9.45 line()——在指定两点间画直线
函数 172
9.46 linerel()——从当前位置点到相对位
移点绘制直线函数 173
9.47 lineto()——在从当前位置点到指定
点间画直线函数 174
9.48 moverel()——将当前点移动到一
相对距离函数 175
9.49 moveto()——将当前点移动到(x,y)
函数 176
9.50 outtext()——在视区显示字符串
函数 176
9.51 outtextxy()——在指定位置显示
字符串函数 177
9.52 pieslice()——绘制扇形并填充
函数 178
9.53 putimage()——在屏幕上输出位图
函数 179
9.54 putpixel()——在指定位置绘制像素
函数 180
9.55 rectangle()——绘制矩形函数 181
9.56 restorecrtmode()——将屏幕模式恢复为先前的initgraph设置函数 182
9.57 sector()——绘制并填充椭圆扇区
函数 183
9.58 setactivepage()——设置图形输出
活动页函数 184
9.59 setallpalette()——按指定方式改变
所有的调色板颜色函数 185
9.60 setaspectratio()——设置图形纵横比
函数 187
9.61 setbkcolor()——设置当前背景颜色
函数 187
9.62 setcolor()——设置当前画线颜色
函数 188
9.63 setfillpattern()——选择用户定义的
填充模式函数 189
9.64 setfillstyle()——设置填充模式和
颜色函数 191
9.65 setgraphmode()——设置当前图形
模式函数 192
9.66 setlinestyle()——设置当前画线宽度
和类型函数 193
9.67 setpalette()——设置有关当前调色板
的信息函数 193
9.68 settextjustify()——设置文本的对齐
方式函数 194
9.69 settextstyle()——设置当前的文本
属性函数 195
9.70 setusercharsize()——为矢量字体
改变字符宽度和高度函数 196
9.71 setviewport()——为图形输出设置
当前视口函数 197
9.72 setvisualpage()——设置可见图形
页号函数 198
9.73 setwritemode()——设置输出
模式 198
9.74 textheight()——获取以像素为单位
的字符串高度函数 200
9.75 textwidth()——获取以像素为单位
的字符串宽度函数 201
第10章 输入/输出函数库:io.h 203
10.1 access()——文件访问权限设置
函数 204
10.2 chmod()——改变文件访问方式
函数 205
10.3 close()——关闭文件函数 206
10.4 creat()——创建文件函数 206
10.5 p()——复制文件句柄函数 208
10.6 eof()——文件检测结束函数 209
10.7 fdopen()——连接文件句柄函数 210
10.8 filelength()——文件字节数统计
函数 211
10.9 getftime——获取文件时间函数 211
10.10 isatty()——设备类型检查函数 212
10.11 lock()——文件共享锁设置函数 213
10.12 lseek()——移动文件指针函数 214
10.13 open()——打开文件函数 216
10.14 read()——读文件函数 217
10.15 setmode()——设置文件打开方式
函数 218
10.16 tell()——获取文件指针位置
函数 219
10.17 unlock()——解除共享锁函数 219
10.18 write()——写文件函数 220
第11章 数学函数库:math.h 221
11.1 abs()——整数绝对值函数 222
11.2 acos()——反余弦值函数 223
11.3 asin()——反正弦值函数 224
11.4 atan()——反正切值函数 225
11.5 atan2()——X/Y反正切函数 226
11.6 ceil()——不小于某数的最小整数
函数 226
11.7 cos()——余弦值函数 227
11.8 cosh()——双曲余弦值函数 228
11.9 exp()——e的次幂函数 229
11.10 fabs()——浮点数绝对值函数 230
11.11 floor()——不大于某数的最大整数
函数 231
11.12 fmod()——余数函数 232
11.13 frexp()——计算浮点数尾数和指数
函数 233
11.14 hypot()——计算直角三角形斜边
长度函数 234
11.15 labs()——长整型绝对值函数 235
11.16 ldexp()——计算幂函数 235
11.17 log()——自然对数函数 236
11.18 log10()——对数函数 237
11.19 modf()——取浮点数小数部分
函数 238
11.20 pow()——计算x的y次幂函数 239
11.21 pow10()——计算10的x次幂
函数 240
11.22 sin()——正弦值函数 241
11.23 sinh()——双曲正弦值函数 242
11.24 sqrt()——平方根函数 243
11.25 tan()——正切值函数 244
11.26 tanh()——双曲正切值函数 245
第12章 内存相关函数库:mem.h 246
12.1 memccpy()——字节复制函数 247
12.2 memchr()——字符搜索函数 248
12.3 memcmp()——串比较函数 249
12.4 memcpy()——字节复制函数 250
12.5 memicmp()——串比较函数 251
12.6 memmove()——字节移动函数 252
12.7 memset()——串设置函数 253
第13章 进程管理函数库:
process.h 254
13.1 spawnl()——创建并运行子程序
函数 255
13.2 spawnle()——创建并运行子程序
函数 256
第14章 函数跳转函数库:
setjmp.h 258
14.1 longjmp()——非局部转移执行
函数 259
14.2 setjmp()——非局部转移函数 260
第15章 标准库函数库:stdarg.h 262
15.1 va_arg()——调用可变参数列表
函数 263
15.2 va_end()——停止使用可变参数
函数 264
15.3 va_start()——开始使用可变参数
函数 265
15.4 vfprintf()——格式化输出流函数 266
15.5 vfscanf()——执行流中格式化输入
函数 267
15.6 vprintf()——格式化输出函数 269
15.7 vsprintf()——格式化输出串函数 270
15.8 vscanf()——执行格式化输入
函数 271
15.9 vsscanf()——执行流中格式化输入
函数 272
第16章 输入/输出库:stdio.h 274
16.1 clearerr()——复位错误标志函数 275
16.2 fclose()——关闭流函数 276
16.3 feof()——检测流上的文件结束符
函数 276
16.4 ferror()——检测流上的错误
函数 277
16.5 fflush()——清除流函数 278
16.6 fgetc()——从流中读取字符函数 279
16.7 fgetchar()——从流中读取字符
函数 280
16.8 fgetpos()——取得当前文件句柄
函数 281
16.9 fgets()——从流中读取字符函数 282
16.10 fopen()——打开流函数 283
16.11 fprintf()——将格式化内容输出
到流函数 284
16.12 fputchar()——输出字符到标准
输出流(stdout)函数 285
16.13 fputs()——送字符串到流中
函数 286
16.14 fread()——从流中读数据函数 287
16.15 freopen()——替换流函数 288
16.16 fscanf()——从流中执行格式化
输入内容函数 289
16.17 fseek()——重定位流上的文件
指针函数 290
16.18 fsetpos()——定位流上的文件
指针函数 291
16.19 ftell()——返回当前文件指针
函数 292
16.20 fwrite()——写内容到流函数 293
16.21 getc()——从流中取字符函数 294
16.22 getchar()——从stdin流中读字符
函数 295
16.23 getche()——从控制台取字符
(带回显)函数 296
16.24 gets()——从流中取字符函数 297
16.25 getw()——从流中取整数函数 298
16.26 perror()——系统错误信息 299
16.27 printf()——格式化输出函数 300
16.28 putc()——输出一个字符到流中
函数 301
16.29 putchar()——在stdout上输出
字符函数 301
16.30 puts()——将字符串送到流中
函数 302
16.31 putw()——将字符或字送到流中
函数 303
16.32 rename()——重命名文件函数 305
16.33 remove()——删除文件函数 305
16.34 rewind()——将文件指针重新指向
流的开头函数 306
16.35 scanf()——格式化输入函数 307
16.36 setbuf()——把缓冲区与流相联
函数 308
16.37 setvbuf()——把缓冲区与流相关
函数 309
16.38 sprintf()——将格式化数据输出到
字符串中函数 310
16.39 sscanf()——执行字符串中的格式化输入函数 311
16.40 tmpfile()——以二进制方式打开
暂存文件函数 312
16.41 tmpnam()——创建一个唯一的
文件名函数 313
16.42 ungetc()——把字符退回到输入
流函数 314
16.43 ungetch()——把字符退回到键盘
缓冲区函数 315
第17章 标准工具库函数库:
stdlib.h 317
17.1 abort()——异常终止进程函数 318
17.2 atexit()——注册终止函数 318
17.3 atof()——转换字符串函数 319
17.4 atoi()——转换字符串函数 320
17.5 atol()——转换字符串函数 321
17.6 bsearch()——二分法搜索函数 322
17.7 calloc()——分配主存储器函数 323
17.8 div()——整数相除函数 324
17.9 ecvt()——转换浮点数函数 325
17.10 exit()——终止程序函数 326
17.11 fcvt()——转换浮点数函数 327
17.12 free()——释放已分配块函数 328
17.13 gcvt()——转换浮点数函数 329
17.14 getenv()——获取环境中字符串
函数 330
17.15 itoa()——转换整数函数 331
17.16 ldiv()——长整型数相除函数 332
17.17 lfind()——线性搜索函数 333
17.18 lsearch()——线性搜索函数 334
17.19 malloc()——内存分配函数 335
17.20 putenv()——加载环境中字符串
函数 336
17.21 qsort()——快速排序函数 338
17.22 rand()——随机数发生器函数 339
17.23 random()——随机数发生器
函数 340
17.24 randomize()——随机数发生器
函数 340
17.25 realloc()——重新分配主存函数 341
17.26 srand()——初始化随机数发生器
函数 342
17.27 strtod()——转换字符串函数 343
17.28 strtol()——转换字符串函数 344
17.29 swab()——交换字节函数 345
17.30 system()——发出DOS命令
函数 346
第18章 信号定义函数库:
signal.h 347
18.1 raise()——发送信号函数 348
18.2 signal()——设置信号对应动作
函数 348
第19章 字符串函数库:string.h 350
19.1 movmem()——从源字符中移动字节
到目标字符函数 351
19.2 setmem()——把内存区域的字节
设置成字符函数 352
19.3 stpcpy()——把字符串复制到数组
函数 353
19.4 strcat()——字符串追加函数 354
19.5 strchr()——查找字符串首次出现
位置函数 355
19.6 strcmp()——字符串比较函数 356
19.7 strcmpi()——字符串比较(不区分
大小写)函数 357
19.8 strcpy()——复制字符串到数组
函数 357
19.9 strcspn()——字符串查找函数 358
19.10 strp()——字符串复制函数 359
19.11 stricmp()——字符串比较(不区分
大小写)函数 360
19.12 strlen()——字符串长度函数 361
19.13 strlwr()——将字符串转换为小写
形式函数 362
19.14 strncat()——字符串尾部追加
函数 362
19.15 strncmp()——字符串比较函数 363
19.16 strncmpi()——字符串比较(不区
分大小写)函数 364
19.17 strncpy()——将字符串复制到数组
函数 365
19.18 strnicmp()——字符串比较(不区分
大小写)函数 366
19.19 strpbrk()——字符串查找函数 367
19.20 strrev()——字符串倒序函数 368
19.21 strset()——将字符串设置成指定
字符函数 369
19.22 strstr()——在字符串中查找指定
字符首次出现位置函数 370
19.23 strtok()——用分隔符分解字符串
函数 371
19.24 strupr()——将字符串转换为大写
形式函数 372
第20章 时间函数库:time.h 373
20.1 asctime()——日期和时间转换
函数 374
20.2 clock()——测定运行时间函数 375
20.3 ctime()——转换日期和时间为字符
串函数 376
20.4 difftime()——计算时间差函数 376
20.5 gmtime()——获取格林尼治结构的
时间函数 377
20.6 localtime()——获取tm结构的系统
时间函数 378
20.7 time()——获取或设置时间函数 379
20.8 tzset()——UNIX时间兼容函数 380
Ⅳ C语言参考手册的内容简介
本书是关于C语言的详尽的参考手册。最新的第5版增加了对C99标准的介绍,更加符合当前读者学习C语言的需要。
全书分为两大部分,共24章。第一部分讨论了C语言的所有语言特征,包括词法、预处理机制、声明、类型、表达式、语句以及函数等基本语言特性。第二部分讨论了C语言的标准库,根据它们不同的功能分别详细介绍。为帮助读者理解相关概念,本书在讨论C语言及其标准库的各方面问题时,提供了许多实例和解释。在第一部分的各章中还提供了练习题,书后则给出了主要练习的解答。这些练习的主要目的是帮助读者理解C语言的基本机制及其重要细节,其中并不涉及复杂的程序设计技术与问题。
本书可以作为高等院校计算机专业C语言课程的教材和参考书,对于一般的C程序员也有重要的参考价值。
Ⅵ 北航的991数据库与c语言程序设计考什么书
先学谭浩强的《C语言程序设计》,这本书比较简单可以入个门随便考个全国二级
不过要想学好C语言这样还远远不够,建议多学习,精通C语言。一下是我搜集的书!!
比如《C语言之四书五经》中介绍的4本。(虽然这些书很多已经绝版了,但我相信电子版也是很有益处。况且,如果你真的想看,我相信你一定有办法搞的到。)这些书你会在很短的时间内看完(比如一两个月),这取决于你的基础和悟性。之后要看那些书呢?我不妨再列几本。Bjarne Stroustrup的《C++程序设计语言》(The C++ Programming Language)一定要看,这本书里面对于C的一些基础概念的定义,比我见过的其他任何C语言书都要全,都要仔细;Bjarne Stroustrup的《C++语言的设计与演化》(The Design and Evolution of C++)和David R.Hanson 的《C语言接口与实现 创建可重用软件的技术》(C Interfaces and Implaementations Techniques for Creating Reusable Software)一定要看,这两本书讲述了如何用C来实现异常处理、实现类型的封装和扩展等一些大的项目中经常用到的高级技术。
另外,即使是最经典最权威的书,也没有办法面面俱到,所以手边常备一本《C语言参考手册》是十分必要的。《C语言参考手册》就是《C Reference Manual》,是C语言标准的详细描述,包括绝大多数C标准库函数的细节,算得上是最好的标准C语言的工具书。顺便提一句,最新的《C程序设计语言》是根据C89标准修订的,而《C语言参考手册》描述的是C99标准,二者可能会有些出入,建议按照C99标准学习。还有一本《C和指针》,写得也是相当地不错,英文名是《Pointers on C》,特别地强调指针的重要性,
Ⅶ 《c语言参考手册原书第五版》pdf下载在线阅读全文,求百度网盘云资源
《c语言参考手册原书第五版》网络网盘pdf最新全集下载:
链接:https://pan..com/s/1PhXbkkQU-mOG5XHWgX-X9A
简介:c语言参考手册第五版涵盖了传统C语言、C89,C95.C99等所有C语言版本的实现,同时讨论了C++与C语言兼容的部分。全书自上而下介绍了C语言的词法结构、预处理器、声明、类型表达式、语句、函数和运行库,是所有C语言编程人员必备的参考书。
Ⅷ C语言参考手册的介绍
《C语言参考手册》是2007年人民邮电出版社出版的图书,作者是哈滨逊(Harbison,S.P)。
Ⅸ C语言函数参考手册的前言
C语言作为当前程序开发中最流行的编程语言之一,以其简单、高效、快捷、方便的特性吸引了大批用户。根据笔者使用C语言的经验,相信对C语言程序开发人员来说,C语言函数参考手册是必需的。因此,笔者编写了本书,希望能真正帮助C语言程序开发人员在编程时实现易查、易学、易用,并使其成为程序开发必备的工具书。
本书内容
本书按照C语言库函数的头文件进行分类,每个头文件为一章内容,分别介绍了对应头文件中常用的C语言函数。对每个头文件中的函数按照字母进行排序,其中每个函数都按照功能、语法来介绍,在每个方法后都有相关的示例。
本书特点
* 即查、即学、即用
本书将查、学、用结合为一体,读者能够使用本书进行快速查询和快速应用,既是实用的工具书,也是学习的参考书。
* 字母排序,快捷搜索
本书在讲解C语言函数时按照头文件进行分类,用户在使用时可以根据头文件快速地缩小查找范围,并且每个头文件以字母顺序进行排序,以便读者更快、更准确地查找相关内容。
* 内容全面,示例丰富
本书内容涵盖了学习C语言应用的各方面技术。为了便于读者快速掌握每个知识点,每个知识点都给出对应的一个或多个示例,并提供了详尽的注释。
* 精彩栏目,贴心提醒
本书根据需要在各章使用了“注意”、“说明”和“技巧”等小栏目,让读者可以在学习过程中更轻松地理解相关知识点及概念,并轻松地掌握个别技术的应用技巧。
本书配套资源
本书提供了内容丰富的配套资源,包括源程序、素材,以及模块库、案例库、题库、素材库等多项辅助内容,读者朋友可以通过如下方式获取。
第1种方式:
(1)登录清华大学出版社的网站,在网页右上角的搜索文本框中输入本书书名(注意区分大小写和留出空格),或者输入本书关键字,或者输入本书ISBN号(注意去掉ISBN号间隔线“-”),单击“搜索”按钮。
(2)找到本书后单击超链接,在该书的网页下侧单击“网络资源”超链接,即可下载。
第2种方式:
访问本书的新浪微博: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语言,你还要具体情况具体分析。
写到最后,还有非常非常重要的一点没有提及──代码风格,从最开始学习就必须强迫自己模仿最优秀的代码风格。因为代码风格太重要内容也太多,我会用专门的一篇文章来详细讨论,请大家关注《程序员之路──关于代码风格》。