C语言从入门到精通_(名师笔记精华版)

C 语言从入门到精通

学习编程没多少技巧,多动手,勤提问,实践出真知!

比如说书上举了个例子,那么我合上书做做看,会出问题吗?问题出在哪,为什么不能那么做?除了书上的做法还有什么办法达到相同的效果?如果两种做法都达到相同效果,那么哪种更好(这里的好指的是性能等方面)?还要多看别人经典的源程序,但在练习时千万别乱用"拿来主义",老老实实的自己敲一遍加深印象(嘿嘿,自虐).知识是逐渐积累起来的!

如果要想拔高的话,就得多啃啃理论性的东西,对编译器/系统的原理等要有一定的认识(这样能节省很多对莫名其妙的错误的调试时间)

拿到题目先自己思考,如果真的想不通就问,问老师,和同学多讨论

还有一点,就是在学习C语言的初期就要注意书写风格,养成良好的编程习惯(有相关的书的),这点你学计算机的以后参加编程工作时会很有体会的(那时想改自己的编程风格就难啦~~咱也要和国际化接个轨嘛)!

补充:为了今后的考试着想,还是用专门的C语言编译器吧~~因为有些东西在C++编译器上能行,C编译器则不行,保险起见,装个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语言,你还要具体情况具体分析。

写到最后,还有非常非常重要的一点没有提及——代码风格,从最开始学习就必须强迫自己模仿最优秀的代码风格。因为代码风格太重要内容也太多,我会用专门的一篇文章来详细讨论,请大家关注《程序员之路——关于代码风格》。

很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎

样学习C语言?

我和刚刚起步的人一样,学习的第一个计算机语言就是C语言.经过这

些年的开发,我深深的体会到C语言对于一个程序设计人员多么的

重要,如果不懂C语言,你想写底层程序这几乎听起来很可笑,(除了汇编)不

懂C语言,你想写出优秀高效的程序,这简直就是天方夜谭.为什

么C语言如此重要呢?

第一:C语言语法结构很简洁精妙,写出的程序也很高效,很便于描

述算法,大多数的程序员愿意使用C语言去描述算法本身,所以,

如果你想在程序设计方面有所建树,就必须去学它.

第二:C语言能够让你深入系统底层,你知道的操作系统,哪一个

不是C语言写的?所有的windows,Unix,Linux,Mac,os/2,没有一个

例外的,如果你不懂C语言,怎么可能深入到这些操作系统当中去

呢?更不要说你去写它们的内核程序了.

第三:很多新型的语言都是衍生自C语言,C++,Java,C#,J#,perl..

.哪个不是呢?掌握了C语言,可以说你就掌握了很多门语言,经过

简单的学习,你就可以用这些新型的语言去开发了,这个再一次验

证了C语言是程序设计的重要基础.还有啊,多说一点:即使现在

招聘程序员,考试都是考C语言,你想加入it行业,那么就一定要

掌握好C语言.

那么究竟怎样学习C语言呢?

1:工欲善其事,必先利其器

这里介绍几个学习C语言必备的东东:

一个开发环境,例如turbo C 2.0,这个曾经占据了DOS时代开发

程序的大半个江山.但是现在windows时代,用turbo C有感觉不方

面,编辑程序起来很吃力,并且拖放,更没有函数变量自动感应功

能,查询参考资料也不方便.建议使用Visual C++,这个东西虽然

比较大块头,但是一旦安装好了,用起来很方便.

2:葵花宝典

学习计算机语言最好的方法是什么?答曰:读程序.

没错,读程序是学习C语言入门最快,也是最好的方法.如同

我,现在学习新的J#,C#等其他语言,不再是抱着书本逐行啃,而

是学习它们的例程.当然,对于没有学过任何计算机语言的初学者

,最好还是先阅读教程,学习完每一章,都要认真体会这一章的所

有概念,然后不放过这一章中提到的所有例程,然后仔细研读程序

,直到每一行都理解了,然后找几个编程题目,最好是和例程类似

的或一样的,自己试图写出这段已经读懂的程序,不要以为例程你

已经读懂了,你就可以写出和它一样的程序,绝对不一定,不相信

你就试一试吧,如果写不出来,也不要着急,回过头来再继续研究

例程,想想自己为什么写不出来,然后再去写这段程序,反反复复

,直到你手到擒来为止.

3:登峰造极

写程序的最高境界其实就是掌握各种解决问题的手段(数据结构)和

解决问题的方法(算法).

是不是写出底层程序就是程序设计高手呢?非也,写底层程序,无

非是掌握了硬件的结构,况且硬件和硬件还不一样,要给一个芯片

写驱动程序,无非就是掌握这块芯片的各种寄存器及其组合,然后

写值读值,仅此而已.这不过是熟悉一些io函数罢了.那么怎样才

算精通程序设计呢?怎样才能精通程序设计呢?举个例子:你面前

有10个人,找出一个叫"张三"的人,你该怎么办?第一种方法:

直接对这10个人问:"谁叫张三".第2种方法:你挨个去问"你

是不是张三?",直到问到的这个人就是张三.第三种方法:你去

挨个问一个人"你认不认识张三,指给我看".不要小看这个问题

,你说当然会选第一种方法,因为这个方法最

快,效率最高,但是在程序设计中找到解决问题的最优方法和你用

的手段却是考验一个程序员程序设计水平的重要标志,而且是不容

易达到的.刚才这个问题类似于数据结构和算法中的:Map数据结

构,穷举查找和折半查找.所以掌握好数据结构和一些常用算法,

是登峰造极的必然之路.

《C程序设计语言》教学目标

* 掌握C语言的基本语法和规定。

* 掌握程序设计基本算法和思路,开拓思路,

* 提高上机操作能力,掌握上机调试程序的方法

* 培养自学能力,强调自主学习。

* 养成良好的程序设计习惯。

通过总结多年的教学经验,总结学生在学习过程中具有规律性的特点,可以发现,在本课程学习过程中学生经常出现下面这些问题:

* 注重理论学习,忽视上机编程实践,造成"只能用笔在纸上编程"的奇怪现象。特别是一些女同学,一到机器前面就手忙脚乱,如果程序再出现错误,就更不知道该如何查找错误,如

何排除错误了。

*入门时自以为难度大,产生畏难情绪,总是怕,最后因为怕学不好而导致没有学好。

*前期没有抓紧,希望通过突击完成课程学习。本课程要靠平时的积累,几乎不能靠临时突击,由于前面基础补扎实,到了后面已经无法弥补。

*太注重学习语句的语法规定,忽视了对编程的思路和方法的训练。有些同学再学习结束的感觉就是:对每一个语句的语法和每一条规定都明白,就是面对实际问题的时候不知道该如何思考,该如何编程。

*急于求成,总想编写综合性的程序,忽视基本概念,忽视基本功的训练和练习。在编写程序中发现问题,一追根源,全是概念或基础问题。

为了学好本课程,没有什么窍门,建议大家采用如下的"笨"方法:

*认真听讲,积极思考,提高上课效率。教师上课讲述的都是课程的重点和难点,听好课程可以达到"事半功倍"的目的。

*主动上机,多多实践,提高动手能力。通过上机实践来验证所学的理论,通过在机器上查找错误来巩固概念,通过提高上机能力来促进理论学习,开阔编程思路,提高反映速度,提高分析问题解决问题的能力,锻炼心理素质,提高心理承受能力。

*学习初期重点掌握语言的语法和规定。这是基础。

*后期重点掌握编程的思路和基本算法。这是重点。

*学会自学,加强交流,及时答疑解惑。可以采用多种形式进行交流,可以是传统的面面进行答疑,也可以是利用网络通过邮件、BBS进行网上交流。不要将疑问积累到最后。

*开阔眼界,打开思路,多看几本书。C语言的书非常多,各有自己的特色,要找到适合自己的参考数目

2 回复:C语言学习方法-----北京理工大学李凤霞教授等专家谈

1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想 出来再参考别人的提示,你就知道自己和别人思路的差异。

2.初学者请不要看太多太多的书那会误人子弟的,先找本系统的学,很多人用了很久 都是只对部分功能熟悉而已,不系统还是不够的。

3.看帮助,不要因为很难而自己是初学者所以就不看;帮助永远是最好的参考手册, 虽然帮助的文字有时候很难看懂,总觉得不够直观。

4.不要被对象、属性、方法等词汇所迷惑;最根本的是先了解最基础知识。

5.不要放过任何一个看上去很简单的小问题--他们往往并不那么简单,或者可以引伸 出很多知识点;不会举一反三你就永远学不会。

6.知道一点东西,并不能说明你会写脚本,脚本是需要经验积累的。

7.学脚本并不难,JSP、ASP、PHP等等也不过如此--难的是长期坚持实践和不遗余力的博览

群书;

8.看再多的书是学不全脚本的,要多实践

9.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;

10.学习脚本最好的方法之一就是多练习;

11.在任何时刻都不要认为自己手中的书已经足够了;

12.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;

13.别指望看第一遍书就能记住和掌握什么--请看第二遍、第三遍;

14.请把书上的例子亲手到电脑上实践,即使配套光盘中有源文件;

15.把在书中看到的有意义的例子扩充;并将其切实的运用到自己的工作中;

16.不要漏掉书中任何一个练习--请全部做完并记录下思路;

17.当你用脚本到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余 下的部分粗略的完成以保证这个代码的完整性,然后分析自己的错误并重新编写和工 作。

18.别心急,写脚本确实不容易;水平是在不断的实践中完善和发展的;

19.每学到一个脚本难点的时候,尝试着对别人讲解这个知识点并让他理解----你能 讲清楚才说明你真的理解了;

20.记录下在和别人交流时发现的自己忽视或不理解的知识点;

21.保存好你做过的所有的源文件----那是你最好的积累之一;

22.对于网络,还是希望大家能多利用一下,很多问题不是非要到论坛来问的,首先 你要学会自己找答案,比如google、百度都是很好的搜索引擎,你只要输入关键字就 能找到很多相关资料,别老是等待别人给你希望,看的出你平时一定也很懒!

23.到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问 题早就有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己 的帖子没人回的。

24.虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方, 如果你总期望有高手总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的 才有讨论的说法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你 讨论呢。能找到很多相关资料,别老是等待别人给你希望,看的出你平时一定也很懒!

25.到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问 题早就有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己 的帖子没人回的。

26.虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方, 如果你总期望有高手总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的 才有讨论的说法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你 讨论呢。

别做浮躁的人

浮躁的人容易问:我到底该学什么;----别问,学就对了;

浮躁的人容易问:JS有钱途吗;----建议你去抢银行;

浮躁的人容易说:我要中文版!我英文不行!----不行?学呀!

浮躁的人分两种:只观望而不学的人;只学而不坚持的人;

浮躁的人永远不是一个

参考资料:忘了在哪看到的希望对你有所帮助 我觉得很好

谈及C语言,我想凡是学过它的朋友都有这样一种感觉,那就是“让我欢喜让我忧。”欢喜的是,C语言功能非常强大、应用广泛,一旦掌握了后,你就可以理直气壮地对他人说“我是电脑高手!”,而且以后若是再自学其他语言就显得轻而易举了。

了解一些基本知识

一.C语言的背景

就个人感触,无论学习哪门语言首先应该了解一下自己所学语言的背景,也可以说它的发展史。

C语言属于高级程序语言的一种,它的前身是“ALGOL”。其创始人是布朗·W·卡尼汉和丹尼斯·M·利奇。C语言问世时是带有很大的局限性,因为它只能用于UNIX系统上。然而随着科学技术的进步,计算机工业的发展,C语言逐渐脱离UNIX。19xx年美国标准化协会制定了C语言的国际标准,简称“ANSI C”,从此以后它便成为一种广泛使用的程序语言。C语言的优点很多,主要的有如下四点:

1.兼备高级语言与低级语言的优点,属于一种中间语言。

2.它是一种结构化程序设计语言,非常适合结构化程序设计。

3.有较丰富的数据类型、运算符以及函数供以选用。

4.直接与内存打交道,使修改、编辑其他程序与文档变得轻松,简单。

二.二大语系二种不同的学习方法

笔者学习过很多程序语言,例如:C,C++(C语言的扩展),QBASIC,VB(BASIC的可视化),JAVASCRIPT,JSCRIPT ,VBSCRIPT,JAVA,ASP,FOXPRO,PERL等等,就本人实践所得,其实高级程序语言分为两大语系。一路是以C为主的程序语言,例如:JAVASCRIPT,JAVA

等,这类语言在函数的调用,程序语句的书写,循环的控制都极为相似。另一路是以BASIC为首的程序语言,例如:FOXPRO,VBSCRIPT等,此类语言同样具有相似的函数调用,程序语句书写以及循环控制,但与C语系是不同的。因此若是您以前是从QBASIC起家的,那么在学习C语言前最好是先洗洗脑,千万不要把学习BASIC的方法以及思路用在C身上。

讲到这里,我想大家对C语言一定有了感性认识吧!下面让我们再升华一下,全方位亲密接触它。学习C语言必须从以下四点入手,也就是说,只要你能掌握这四点的内容,那么基本上就大功告成了。

亲密接触C语言

一.输入输出

C语言的输入输出是非常严格的,或许在其他程序语言中我们可以不关心这个问题,但在C语言中,我们必须要彻底了解它。由于篇幅有限,因此笔者不能详谈,有兴趣的朋友可以参考由著名程序语言教授谭浩强先生主编,由清华大学出版社出版的《C程序设计第二版》。不过这里笔者还是有几点要谈一下。

1.二维浮点数数组的输入

二维浮点数数组的输入(即:通过键盘给二维浮点数数组赋值)在很多专业书中都没有详细讲过这个问题。在给二维浮点数数组赋值时一定要先声明一个变量,接着把数值赋予这个变量,最后把变量数值赋予二维浮点数数组赋值。实例如下:

# include "stdio.h"

main()

{

float a[2][3],x ;

int i,j;

for(i=0;i<2;i++)

for(j=0;j<3;j++)

{scanf("%f",&x);

a[i][j]=x;}

}

2010-6-2 20:40 回复

晴天霹雳的

0位粉丝

2楼

不能写成:

# include "stdio.h"

main()

{

float a[2][3] ;

int i,j;

for(i=0;i<2;i++)

for(j=0;j<3;j++)

scanf("%f",&a[i][j]);

}

同样道理,在结构性浮点数组变量中也一定要按照这种格式输入。实例如下:

# include "stdio.h"

struct student

{float b[3];

int x;

}a[2];

main()

{

float x ;

int i,j;

for(i=0;i<2;i++)

for(j=0;j<3;j++)

{scanf("%f",&x);

a[i].b[j]=x;}

}

同样道理,在结构性浮点数组变量中也一定要按照这种格式输入。实例如下:

# include "stdio.h"

struct student

{float b[3];

int x;

}a[2];

main()

{

float x ;

int i,j;

for(i=0;i<2;i++)

for(j=0;j<3;j++)

{scanf("%f",&x);

a[i].b[j]=x;}

}

2.注意输出格式中“%”后的字符

C语言的输出说复杂不复杂,因为常用的都很简单。可说不复杂也未必,记得曾在一次等级考前辅导我们C语言的教授讲道:“如果C语言要考得很难的话,根本不用考什么指针,只要专考输出格式,我想百分之九十九的学生都不及格。”当时我们无不认同。从这则事例中可以看出C语言的输出格式之复杂程度。因此大家在学习它时千万要学会辨别输出格式中“%”后的字符,每个字符都有其意义,也都有其作用。

二.优先级

说道优先级,有很多朋友都不是很了解或说很模糊。为此笔者想先通过一个例子让各位有个概念。什么叫优先级?比方说,我们在公交车终点站排座队时总会遇到70岁以上的老人不需要排队就能上车的情景,这就是优先级的涵义。C程序在运行时也象排队坐车一样,首先照顾那些优先级高的运算符,若是优先级相同,那么就象遇到两位(或两位以上)70岁以上的老人那样,让他们依次上车。但是C语言中的优先级的运算并不是千篇一律的,只能说是在大多数情况下,有些运算符的优先级有其自己的特点,因此这点大家要注意。例如条件表达式:条件?结果1:结果2,这种表达式很多朋友都知道,它的作用与IF?ELSE?条件判断语句很雷同,它运算时的优先级就不是按照C语言的规则来完成的。所以说对于优先级各位编程爱好者一定灵活掌握,不要死记硬背。

三.指针

就个人认为,C语言中的指针是最有特色的,当然也是最难学的。指针说穿了,其实是变量的一种表现形式,只不过这种变量记载的不是数值而是地址。就象一个人可以用姓名来表示自己,也可以用身份证号码来表示自己一样。笔者涉足编程已经有三年多了,在这期间曾经收到过很多网友的电子邮件询问学习指针的方法。就本人感触,学习指针最好是先学些

计算机硬件工作的原理,例如:直接寻址,间接寻址等,只有了解了这些内容以后,你再学指针就比较容易理会,毕竟C语言是一门介于机器语言与高级语言中间的语言,没有一些硬件工作知识是很难领悟它的真谛的。然而事事并非绝对,如果你没有这些知识也不要紧,只要清楚知道以下笔者总结的二点再加上多练习便可:

2010-6-2 20:40 回复

晴天霹雳的

0位粉丝

3楼

1.指针是地址变量:它的值有两种:其一是地址,其二是内容。不同的表达方式可以取不同的值,这有点象一个家庭地址在不同的场合标识的人物也不同。例如:父母亲在他们的单位所登记的家庭地址就代表他们自己,而你在学校中登记的同样的家庭地址就代表你自己。

2.指针是可以运算的,它的运算法则与变量是一致的。

另外,在编写一个程序时,除非万不得已,一般不要使用指针变量。因为指针是比较复杂的,用不好就“当机”。所以笔者建议各位对于指针只要能看懂就行,当然如果你是准备参加考试的就另当别论了。

四.函数

虽说很多程序语言都有函数这一内容,但笔者觉得C语言的函数是最有魅力的。如果你能完全掌握C语言的函数,那么学习C++就不成问题了(C++是一门建立在C语言上,但又不同于C语言的高级程序语言,它增添了很多函数。)。

学习函数的方法是比较简单的,只有两个字“牢记”,即:牢记函数的功能,牢记函数的用途以及如何输入输出。有些朋友认为,程序语言中的函数没有多大用处,其实这并不正确,函数从本质上讲是一段通用程序,用它可以帮助我们节约很多编程的时间,一个聪明的编程者在编写程序前往往总是先找自己所编写的程序中有多少是可以用函数来代替的。笔者曾经作过一个比较字符串的实验,用C语言中的strcmp()函数只要一句话,而自己编写的话30句话都摆不平,可想而知函数是多么实用呀!

写到这里笔者该告一段落了,下面送一个本人自己用C 语言编写的注册表比较程序给诸位。此段程序的注释请看“/*?*/”后的文字,程序运行时(在DOS模式下)输入的方式

如下:compare xx1.reg xxx2.reg xxx3.txt,注意字段与字段之间是有空格的。(compare是程序名)

程序代码:

# include "stdio.h" /*定义头文件或说包含文件*/

main(argc,argv) /*定义带参数的主函数*/

int argc; /*定义参数类型*/

char *argv[]; /*定义第二参数类型*/

{ FILE *fp1,*fp2,*fp3; /*定义文件指针*/

char a,b; /*定义字符变量*/

if((fp1=fopen(argv[1],"r"))==NULL)

/*打开第一的注册表备份文件,如果不存在则跳出程序并显示“The file don`t open!”*/

{ printf("The file don`t open!");

exit(0); }

if((fp2=fopen(argv[2],"r"))==NULL) /*打开第二的注册表备份文件,如果不存在则跳出程序并显示 “The file don`t open!”*/

{ printf("The file don`t open!");

exit(0);}

if((fp3=fopen(argv[3],"w"))==NULL) /*建立新的文本文件,用于存放比较结果。*/

{printf("The file don`t open!");

exit(0);}

rewind(fp1); /*规定文件指针fp1指向第一个注册表文件头部*/

rewind(fp2); /*规定文件指针fp2指向第二个注册表文件头部*/

while(!feof(fp1)||!feof(fp2)) /*开始比较*/

{ a=fgetc(fp1); /*读取第一个注册表文件内容并赋予给字符变量a*/

b=fgetc(fp2); /*读取第二个注册表文件内容并赋予给字符变量b*/

if(a!=b) fputc(b,fp3);

/*字符变量a与b不相同的话,那么把不同之处写入新建的文本文件中*/ if(feof(fp1)) fputc(b,fp3);

/*如果第一个注册表文件已经读完,第二个文件还有未读取部分,那么把第二个文件的剩余部分全部写入新建文件中*/

if(feof(fp2)) fputc(a,fp3);} /*如果第二个注册表文件已经读完,第一个文件还有未读取部分,那么把第一个文件的剩余部分全部写入新建文件中*/

fclose(fp1); /*关闭第一个注册表文件*/

fclose(fp2); /*关闭第二个注册表文件*/

fclose(fp3); /*关闭新建文件*/

}

对于高深莫测的C语言来说,寥寥3千字并不能说清楚的什么问题。但只要您看了此文后,我想对于您学习此语言一定有很大的帮助,同时也能了知晓如何用最短的时间学会C语言以及掌握C语言的精髓所在。另外,此文中所涉及的知识点都是笔者通过实践得出的,因此若是其他专业书籍没有讲到过的问题可以参考本文。最后祝大家学习C语言顺利!

某天,你需要完成一个求100的阶乘的作业,于是你搬来一个最新的电脑,为它安装了最新的windows vista操作系统,然后坐在它的身前,喊“喂电脑,给我计算100的阶乘”,电脑说“ok, wait a moment”; 过了一会,一盘香菇小白菜端了上来!呵呵,电脑不是waiter, 你喂它它是不会有反应的,如果你真的wait a moment, 恐怕你就需要wait one more moment了!一万年后,人们就把你命名成“望夫崖”。

既然电脑不是伺应生,听不懂我们的话,那么我们要怎么控制它呢?如果你们给我装聋作哑,我会告诉你期末挂了你,哦,你立马老实了!对于电脑,我要怎么才能使唤它,让它为我工作呢?不错,我们有个强力工具,C语言!

好,我们把上面的场景复习一下:

你要我算100的阶乘,于是我去机房上机,编写了一个程序:

( 参加ppt......)

运行程序,哦,结果出来了!

有人认为,现在是java和.net的时代,有谁还需要C以及汇编呢?孰不知,java和.net是建立在软件之上的,是为了垄断市场而建立起来的体系,犹如挖好一个金壁辉煌的坑,请你往下跳,还自以为站在巨人的肩膀上,事实上成了坑底之蛙。要成为一个真正的程序员,并期望成为一个程序员高手,必须从机器出发,从cpu到操作系统,再到软件体系,高手的境界就是悟道后的明镜灵台,软件设计出神入化,我就是程序,程序就是我。

听完我讲高手的境界,于是乎你很受感动,说:我要努力学习,向高手学习!隔天就买了一堆MFC, VB, JAVA以及.NET的书回来,早上五点钟起来背书!这样是不行的,正确的入门方法只有一个,要证大道,唯有此法!同学们,从C语言入手,努力学好C语言!

旁观者李四说:此人大笨也!我用鼠标随便拖几个控件,就是一个xxx管理系统了,你用C语言恐怕是一年也写不出来吧!好吧,我要承认,讲这话的都已经是mS的奴才了,别的我不了解,MFC本身就是一个封闭的架构,从MFC入手学习,你只会形成一种封闭的思维模式,因为MS希望很多人只学会表面的东西,不致成为高手,所以它大力推荐所谓的可视化的程序

开发工具,也真有很多人愿意上他的当,最后真正迷失方向。说他坐不了程序吧,他也可以作,但是如果程序复杂一点,出现问题时,问题出再哪里就搞不清楚了,反正是不清楚! 梁肇新,大牛啊,他说:“我就搞不懂了,用鼠标怎么写程序呢?在我的公司里,高手的键盘响个不停,鼠标偶尔响一下,新手是鼠标响个不停,键盘偶尔响一下,他们的薪水相差的就不是一倍那么多了!”

C语言是各大操作系统的基础,Unix、Linux、Windows其内核都清一色是C语言开发的,(某些地方是和汇编语言混合开发的),君不见Windows API都是C语言函数的接口?Unix/Linux绝大多数应用都是C语言开发的;Windows应用程序用纯API开发已然不多,大多都是依靠某种Application Framework,比如所谓的VC++,其实就是指VC IDE + C++语言 + MFC(现在重点已转向ATL、WTL),但是Windows服务、网络、驱动程序等底层软件,还是C语言开发的。各种语言的编译器,包括java虚拟机,都是用C语言开发的。各种嵌入式设备,如手机、PDA也都是C语言开发的。C语言历史悠久,其内容也绝非谭浩强老师的《C语言程序设计(第二版)》所描述的那么简单——那本书只是针对中国国情的教学入门书而已。 学生总喜欢问:那种语言好?学那种语言有前途?这种问题天天在讨论,永无休止。其实我觉得大家所关心的,无非是那种语言更有“钱途”,学习那种语言毕业后能够轻松找到高薪的工作——当年我也是这么想。那么,我告诉你,如果你精通C语言,请你去华为,不要在小池塘里浪费青春了!

2009-7-29 18:55 回复

oo1414114

4位粉丝

2楼

OK, 听了我苦口婆心的劝告,你准备从C语言入手,开始攀登程序员高手这座山峰了,在你出发之前,你的行囊中需要准备什么呢?

第一个要装进行囊和你一起前进是“规范的格式”,有很多教科书,参考书,不太注重程序的格式的问题,写出的程序就象一堆堆的垃圾一样,这也导致了现在很多人写的程序中有很多的废码,垃圾代码,这和那些入门的书有非常大的关系,要把那些作者都拿来打打PP。真正的商业程序绝对是规范的,张三写的程序和李四的程序格式大致相同,各种标识符的命名规则一样,否则谁也看不懂你写的程序。如果写出来的代码谁也看不懂,那绝对是垃圾。如果要把那些垃圾翻半天,勉强才把金子找出来,那这样的程序不如不要,还不如重新写过,这样,思路会更清楚一点。所以说,规范的格式是入门的基础。那这个规范的格式包括什么呢?

不少啊,要坚持才能做到!长标志符命名,代码缩进,一对大括号范围不超过一屏幕,等等。 第二个要装进行囊的是耐心,所谓工欲善其事,必先利其器。要想成功,没有一个相对平淡的过程是不可能的。这不仅仅指你在学习过程中要有耐心,要循序渐进,而且也说的是另一个重要的方面:调式程序。调试是写程序过程中一个重要的方面,如果有人能一次写成程序,

牛啊,而且是大牛,不光是大牛,还是老子骑的那头青牛,凡人是做不道的!调试是每个程序必定经历的历程。经常有同学问我:老师,我的程序完全没错误啊,都是照书抄的啊!怎么就运行不出来呢?对于这个问题我也看不出来!你们有问题可以找我,找其他的老师,老师找谁啊?李师父?那是很荒谬的!我就只好坐下来调试,这个说实话,调试是很枯燥的,所以有同学抱怨说我操作太快,不理解为什么要这样,为什么要那样,我的脾气不太好,一烦躁就会骂人地,所以,这个就需要你们自己修炼内功了!

有了这两个就可以了,可以出发了,估计有人说了,英语和数学不要了?大家都说大学生了,这种问题就不要问了嘛!你已经用早晨和傍晚的时光学习了英语了,我这个没有要去,计算机专业英语超简单,小学水平而已,记住一些专业词汇就可以了!关于数学,说数学好,写程序就好是没有科学根据的!我就有个同学,数学回回100分,写程序也就是hello world的程度,不过人家现在是数学博士了!惭愧啊!做为的大学生,而且是我们这个专业的大学

生,已经完全具备了写程序所需要的数学素养了!所以这个不是我们要担心的,Ready? Go!

第一招,学什么呢?打狗棍法!呵呵

有一个伟人说过:“重复权威是成熟的必经之路”,这是站在巨人的肩膀上的做法,习武之人首先要学的都是各种套路,比方说辟邪剑法,然后才能融会贯通,开宗流派;我们学习写程序也要这样来,这是一个捷径,帮你走得更远得捷径。

看书,看好书!书中所写,是前人数十年经验所写,看十本书,就相当于汲取了前人数十年的功力,那么你的内功也会迅速上升1甲子。:)书当然要看好书,只有好书才营养丰富。要做到读书破万卷,编程如有神;枯燥的看书是很郁闷的,很容易变成化石!现在很多是书都是用源码说明问题的,源码就像是动画、就像是幻灯片,把书中的招式一一演练给你看。可以说高手的经验大都是源自代码,最后也都化成源码展现在大家面前,把书上的程序一个一个的输入(用键盘,用你的手指)到电脑中,编译运行。自己手工输入这一步不能省略,现在很多书有配套源码,很多同学或者成年人学习的时候都耍小聪明,直接把源码复制过去编译运行,hoho, 这是没有效果的。

自然,我让你输入程序不是让你练习盲打,你在输入的过程就可以品出程序的好坏来了,如果发现自己输入了很多重复代码,那至少这个程序的结构就不好了,穷则变,变则通嘛,你就想改进它啊,这不是很好吗?

2009-7-29 18:55 回复

oo1414114

4位粉丝

3楼

当然,程序输得多了,盲打功力也上了一个台阶,键盘敲得快了,薪水也跟着涨上去了!^_^ 不过,键盘敲得快不代表你的程序就写得好,否则学校只要每个学生发一份盲打联系软件,

四年毕业后,个个都是程序高手了!

好了,你输了一个程序进电脑了,锻炼了手部肌肉,也运行出了结果,愉悦了身心,就此满足了?那离高手还远呢,要变成高手,你还要锻炼一下你得脑部肌肉!拿起你得笔,拿起你得纸,用你得大脑,这号称世界上最精密的机器来运行你输入的程序,记录下不同运行时刻变量的值,记录下程序的运行分支,最后发现,这个程序被你解剖到了纸上,我相信也解剖到了你的心里!这是捷径的核心,一定要记住,输入的程序不是说正确运行就完事了,要去阅读一下代码,利用笔和纸做辅助工具,做一下笔记,这就是重复权威 ,当然,如果你是天才,那请你塞上耳朵,你不在我们讨论的范围之内!

为什么这一步很重要呢?

大家刚开始学习的时候,是不是有种感觉,如果让你写一个程序,你从哪里下手呢?前面?后面?上面?下面?为了解决这个问题,我的程序该如何写呢?抓耳挠腮,好烦啊,于是乎干脆睡觉去,不写了,你看,这种行为是要打PP的!

练武功,总是先重复师父的动作,才能有自己的动作,所以也让我们重重复别人写的程序开始,然后再写自己的程序吧!

遵循这个方法,你们就跟着组织走上了通往罗马的大路了!

接下来,你得走啊,不走怎么到罗马呢? 把你学会的程序设计方法应用到你写的程序中去啊! 某天,你看到这里有个问题,你有了想法,怎么办?上机去,和键盘奋战去!stop, stop! 暂停一下,上机之前,不要忘记了你的笔和纸,勇敢地把你的想法写下来,如果写不出来,就不要去机房浪费爸爸妈妈的血汗钱了!

当然,你不能乱写啊,写出来的东西怎么样才叫不是乱写的呢?实践是检验真理的唯一标准!用你的大脑去运行一边啊,不是叫“人程序合一”嘛?,这就是了!学武功就要学绝世武功!虽然号称最精密,实际效果上,人脑还是没有电脑的准确度的,如果你的大脑能马马虎虎地运行出来之后,那么OK,带上规范的格式和耐心,去上机吧!

自然,我们说一天到晚面对字符界面的TC是有些郁闷,大家都习惯了windows,微软的客户体念设计中心可不是吹出来的!windows多好,色彩斑斓的。当你修炼到我这个程度的时候,非要听这京剧才文思泉涌的写程序的时候,当然要用windows下的集成开发环境了。但是对大家来说,不是现在,windows是很危险地,程序员还是回到TC中去吧!

TC至少有一个好处,可以锻炼我们使用组合键的习惯,可以锻炼我们使用键盘编程的习惯,回想我们刚刚说的梁某说的话“用鼠标怎么编程呢?”有同学不免要提出疑问了,我是80年代甚至是90年代生人,你还让我面对那么枯燥的输入输出界面?我跟你有代沟!我期待有更丰富更吸引人的交互手段哦,这个问题问得好,C语言中也有图形啊,完全可以满足大家寓教于乐得心理!让我们来看这个程序,很简单,就是在屏幕上话一个周期得正弦波! (参见ppt......)

运行效果是不是很好?你学数据结构的时候,树啊,图啊,你都可以这样输出啊,很多地方你都可以做的更好呢!

资料内容所涉及方面:

C/C++/VC++的基础教程、通讯、协议分析、游戏开发、图像处理、管理系统、多媒体、加密与解密、控件ACTIVEX、开发CGI、标准程式库、技术内幕、Windows核心编程、对象模型、人工智能、软件工程、数据结构、WindowsAPI、Visual Basic 、Directx、网络开发、数据库开发、ADO、神经网络、DLL和内存管理、OLE&DDE、操作系统、端口、数值算法、等等技术或相关开发资料。

本人是大三在校学生,由于考计算机二级C屡屡失败,因此感觉对C语言有点心灰意冷,本人感觉C语言最头疼的问题就是要我们人脑去适应机器语言,但机器语言的思维方式又和人脑大不相同,本人每次看一道C语言的考题都像看天书一样,感觉很费神,很吃力,因此向广大网友请教下大家都是怎么学C语言的? 怎样做才能看C语言比较轻松?

共0条评论...相关资料: c语言课件更多资料>> 最佳答案 此答案由管理员代为选出 揪错 ┆ 评论 ┆ 举报

Ican

[大师] 呵呵,其实这些机器语言的规则,你记住就好啦,可能我中学就学习过VB,到了大一学习C语言的时候,感觉入门不难,很快就看明白了,觉得最难的是大家经常说的指针!

我理解你们初学遇到的困难,所以我跟我堂弟也这样提及机器语言的规则问题,和我们平常的的确不同!

C语言的格式很死板的,要求一开始就是函数定义,变量定义!最后是return返回值!我觉得就像平时文章格式一样啊,一开始说明有什么函数,什么变量,接着就是文章内容(实际执行过程),最后告诉我们文章结束(return)。

我认为赋值语句是和日常思维反差最大的,平时数学a=b,就是把a的值赋给b,但在计算机却是把b赋给a,从右边看!这是要习惯的!

当这些基本原则明白后,接着学习数据类型,int, char等等,这也是要记住的!

另外,学编程语言,最关键的是上机操作,先照着书上的敲,来检验书上说的是否正确,然后按照自己的疑问尝试修改,看为什么不行,有没有问题!

考这个二级C,当你上机操作多了,写的代码多了,当看到题目上的代码自然很容易看得出代码存在的错误!记住,这考试不是题海战术可以搞定的,当你写得代码多了,学习多了,不做很多题目就能够考得过!

学编程,上机操作才是检验真理的唯一标准!动手多了,才能熟练!

回答:2009-09-18 23:32

提问者对答案的评价:

共0条评论...以下是特别推荐给您的相关问题nes格式软件是哪种语言开发的?v3语言利用C语言,编写一文件加密软件。该软件能够对文件... 20分有什么软件能翻译网站上别国语言如韩文谢谢了 10分什么软件可以编写WML语言的?爱问知识人其它回答 共1条回答评论 ┆ 举报

laoau126

[新手] 快来看啊,这可是一位计算机老师关于“如何学好c语言”发表的文章。 ◇如何学好c语言

教了多年《C程序设计》课程,大多学生觉的这门课程难学。其实,按照我们现在的教学大纲和教学要求,只要同学们掌握一些方法,克服心理上畏难、不轻言放弃,是完全可以学好的。

《C程序设计》的内容很丰富,按照我们现在的教学大纲,教学的主要内容是基础知识、四种结构的的程序设计、函数与数组的应用和一些简单的算法。在学习时,同学们应该把主要精力放在这些部分,通过实践(练习和上机调试等熟练掌握。当然,在初学C语言时,可能会遇到有些问题理解不透,或者表达方式与以往数学学习中不同(如运算符等),这就要求不气馁,不明白的地方多问多想,鼓足勇气进行学习,待学完后面的章节知识,前面的问题也就迎刃而解了,这一方面我感觉是我们同学最欠缺,大多学不好的就是因为一开始遇到困难就放弃,曾经和好多同学谈他的问题,回答是听不懂、不想听、放弃这样三个过程,我反问,这节课你听过课吗?回答又是没有,根本就没听过课,怎么说自己听不懂呢?相应的根本就没学习,又谈何学的好?

学习C语言始终要记住“曙光在前头”和“千金难买回头看”,“千金难买回头看”是学习知识的重要方法,就是说,学习后面的知识,不要忘了回头弄清遗留下的问题和加深理解前面的知识,这是我们学生最不易做到的,然而却又是最重要的。比如:在C语言中最典型的是关于结构化程序设计构思,不管是那种教材,一开始就强调这种方法,这时也许你不能充分体会,但是学到函数时,再回头来仔细体会,温故知新,理解它就没有那么难了。学习C语言就是要经过几个反复,才能前后贯穿,积累应该掌握的C知识。

那么,我们如何学好《C程序设计》呢?

一.学好C语言的运算符和运算顺序

这是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。在学习中,只要我们对此合理进行分类,找出它们与我们在数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再

记不迟。

先要明确运算符按优先级不同分类,《C程序设计》运算符可分为15种优先级,从高到低,优先级为1 ~ 15,除第2、3级和第14级为从右至左结合外,其它都是从左至右结合,它决定同级运算符的运算顺序。下面我们通过几个例子来说明:

(1) 5*8/4%10 这个表达式中出现3种运算符,是同级运算符,运算顺序按从左至右结合,因此先计算5 *8=40,然后被4除,结果为10,最后是%(求余数)运算,所以表达式的最终结果为10%10 = 0;

(2)a = 3;b = 5;c =++ a* b ;d =a + +* b;

对于c=++a*b来说,按表中所列顺序,+ +先执行,*后执行,所以+ + a执行后,a的值为4,由于+ +为前置运算,所以a的值4参与运算,C的值计算式为4*5=20而不是3*5=15了;而对于d=a++*b来说,由于a + +为后置运算,所以a值为4参与运算,使得d的值仍为20,而a参与运算后其值加1,值为5。 这个例子执行后,a的值为5,b的值为5,c的值为20,d的值也是20;

(3)(a = 3,b = 5,b+ = a,c = b* 5)

例子中的“,”是逗号结合运算,上式称为逗号表达式,自左向右结合,最后一个表达式的结果值就是逗号表达式的结果,所以上面的逗号表达式结果为40,a的值为3,b的值为8,c的值为40。

(4)a=5;b=6;c=a>b?a:b;

例中的a>b?a:b是一个三目运算,它的功能是先做关系运算a>b部分,若结果为真,则取问号后a的值,否则取冒号后b的值,因此c的值应该为6,这个运算可以用来代替if?else?语句的简单应用。

二.学好C语言的四种程序结构

(1)顺序结构

顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。

例如;a = 3,b = 5,现交换a,b的值,这个问题就好象交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为: c = a; a = b; b = c; 执行结果是a = 5,b = c = 3如果改变其顺序,写成:a = b; c = a; b = c; 则执行结果就变成a = b = c = 5,不能达到预期的目的,初学者最容易犯这种错误。 顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三步曲的程序就是顺序结构,例如计算圆的面积,其程序的语句顺序就是输入圆的半径r,计算s = 3.14159*r*r,输出圆的面积s。不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。

(2) 分支结构

顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。分支结构的执行是依据一定的条件选择执行路径,而不是严格

按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。

学习分支结构不要被分支嵌套所迷惑,只要正确绘制出流程图,弄清各分支所要执行的功能,嵌套结构也就不难了。嵌套只不过是分支中又包括分支语句而已,不是新知识,只要对双分支的理解清楚,分支嵌套是不难的。下面我介绍几种基本的分支结构。

①if(条件)

{

分支体

}

这种分支结构中的分支体可以是一条语句,此时“{ }”可以省略,也可以是多条语句即复合语句。它有两条分支路径可选,一是当条件为真,执行分支体,否则跳过分支体,这时分支体就不会执行。如:要计算x的绝对值,根据绝对值定义,我们知道,当x>=0时,其绝对值不变,而x<0时其绝对值是为x的反号,因此程序段为:if(x<0) x=-x;

②if(条件)

{分支1}

else

{分支2}

这是典型的分支结构,如果条件成立,执行分支1,否则执行分支2,分支1和分支2都可以是1条或若干条语句构成。如:求ax^2+bx+c=0的根

分析:因为当b^2-4ac>=0时,方程有两个实根,否则(b^2-4ac<0)有两个共轭复根。其程序段如下:

d=b*b-4*a*c;

if(d>=0)

{x1=(-b+sqrt(d))/2a;

x1=(-b-sqrt(d))/2a;

printf(“x1=%8.4f,x2=%8.4f\n”,x1,x2);

}

else

{r=-b/(2*a);

i =sqrt(-d)/(2*a);

printf(“x1=%8.4f+%8.4fi\n”r, i);

printf(“x2=%8.4f-%8.4fi\n”r,i)

}

③嵌套分支语句:其语句格式为:

if(条件1) {分支1};

else if(条件2) {分支2}

else if(条件3) {分支3}

??

else if(条件n) {分支n}

else {分支n+1}

嵌套分支语句虽可解决多个入口和出口的问题,但超过3重嵌套后,语句结构变得非常复杂,对于程序的阅读和理解都极为不便,建议嵌套在3重以内,超过3重可以用下面的语句。 ④switch开关语句:该语句也是多分支选择语句,到底执行哪一块,取决于开关设置,也就是表达式的值与常量表达式相匹配的那一路,它不同if?else 语句,它的所有分支都是并列的,程序执行时,由第一分支开始查找,如果相匹配,执行其后的块,接着执行第2分支,第3分支??的块,直到遇到break语句;如果不匹配,查找下一个分支是否匹配。这个语句在应用时要特别注意开关条件的合理设置以及break语句的合理应用。

(3)循环结构:

循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do –while循环和for循环。四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误,在学习中我们主要学习while、do?while、for三种循环。常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,这就要清楚三种循环的格式和执行顺序,将每种循环的流程图理解透彻后就会明白如何替换使用,如把while循环的例题,用for语句重新编写一个程序,这样能更好地理解它们的作用。特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。

在学完这三个循环后,应明确它们的异同点:用while和do?while循环时,循环变量的初始化的操作应在循环体之前,而for循环一般在语句1中进行的;while 循环和for循环都是先判断表达式,后执行循环体,而do?while循环是先执行循环体后判断表达式,也就是说do?while的循环体最少被执行一次,而while 循环和for就可能一次都不执行。另外还要注意的是这三种循环都可以用break语句跳出循环,用continue语句结束本次循环,而goto语句与if构成的循环,是不能用break和 continue语句进行控制的。

顺序结构、分支结构和循环结构并不彼此孤立的,在循环中可以有分支、顺序结构,分支中也可以有循环、顺序结构,其实不管哪种结构,我们均可广义的把它们看成一个语句。在实际编程过程中常将这三种结构相互结合以实现各种算法,设计出相应程序,但是要编程的问题较大,编写出的程序就往往很长、结构重复多,造成可读性差,难以理解,解决这个问题的方法是将C程序设计成模块化结构。

(4)模块化程序结构

C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写

成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写,因此常说:C程序=主函数+子函数。 因些,对函数的定义、调用、值的返回等中要尤其注重理解和应用,并通过上机调试加以巩固。

三.掌握一些简单的算法

编程其实一大部分工作就是分析问题,找到解决问题的方法,再以相应的编程语言写出代码。这就要求掌握算法,根据我们的《C程序设计》教学大纲中,只要求我们掌握一些简单的算法,在掌握这些基本算法后,要完成对问题的分析就容易了。如两个数的交换、三个数的比较、选择法排序和冒泡法排序,这就要求我们要清楚这些算法的内在含义,其中选择法排序和冒泡法排序稍难,但只要明白排序的具体过程,对代码的理解就不难了。如用选择法对10个不同整数排序(从小到大),选择法排序思路:设有10个元素a[1]~a[10],将a[1]与

a[2]~a[10]比较,若a[1]比a[2]~a[10]都小,则不进行交换,即无任何操作;若a[2]~a[10] 中有一个比a[1]小,则将其中最大的一个(假设为a[i])与a[1]交换,此时a[1]中存放了10个中最小的数。第二轮将a[2]与a[3]~a[10]比较,将剩下9个数中的最小者a[i]与a[2]交换,此时a[2] 中存放的10个数中第2小的数;依此类推,共进行9轮比较,a[1]到a[10]就已按从小到大的顺序存放。即每一轮都找出剩下数中的最小一个,代码如下:

for(i=1;i<=9;i++)

for(j=i+1;j<=10;j++)

if(a[i]>a[j]

{temp=a[i];

a[i]=a[j];

a[j]=temp;

}

结语:当我们把握好上述几方面后,只要同学们能克服畏难、厌学、上课能专心听讲,做好练习与上机调试,其实C语言并不难学。

程序员之路──如何学习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语言,你还要具体情况具体分析。

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

谈及C语言,我想凡是学过它的朋友都有这样一种感觉,那就是“让我欢喜让我忧。”欢喜的是,C语言功能非常强大、应用广泛,一旦掌握了后,再自学其他语言就显得轻而易举了。忧虑的是,C语言犹如“少林武功”一般博大精深,太难学了。其实就笔者认为C语言并非是“difficult(困难)”的,只要你能理清思路,掌握它的精髓,那么自学C语言是一件非常容易且又其乐无穷的事。今天本人就与大家一起谈谈如何学习C语言或者说学习C语言应从哪几方面着手。

一、明确学习目的:

◆ C语言功能强大,本书涉及知识结构全面、合理。是一门非常好的编程语言基础语言。 ◆ C是一门学习逻辑、程序算法、算法实现很好的教程。通过第一学期C语言的学习,从而可以了解程序的设计编码的过程。

◆ C是一单进程、单线程执行,从头到尾执行,学习难不小。但结构严谨的高级语言,

可以很好学习编程规范和要求。

◆ C语言是为以后学习其它语言打下基础的语言。

二、好的学习方法:

基于上述学习目的并且也我们第一门编程语言。学习方法是:

◆ 课前预习,课后复习,认真做课堂、课后的作业,理解理论知识。

◆ 记住语法规则。

◆ 加强逻辑思维。

◆ 多动手,通过练习上机了解它的运行过程。

◆ 实践—>理论—>再实践,刚开始学习C语言时,按示例练习,并推动理论的学习,然后再自己多思考,多上机实践。

常见问题:

1、有同学听说C语言很难,刚学习到第二、三章时,于是说:老师,我不会呀!真的很难。我不知道如何学习?

分析:

1)心理作用,在没有学习之前都认为很难了。学不会也正常。

2)前三章是基础,对于没有学习过编程语言的同学来说,新的专业名词很多。

3)前三章是基础,还不能完整的写出一个C程序。于是,就不知道如何去用,在哪个时候用等很多的疑问。

问题的存在:过于着急,对新的事务领悟不够。

解决方法:学习是循序渐进和积累的过程,不要着急。这此知识都是为以后作铺垫的。

2、有同学学到数组时,说:听你上课时,我懂,但要我自己写,我不知道如何写?不知道如何开始?

分析:

1)逻辑性思想太乱。如果问:“如果班上有30个同学,要判断成绩是否及格,你将如何做?”;“当然先知道每个同学的成绩,然后一个一个和60比较,如果大于等60,则及格,否则不及格。”;“那么C语言来实现,如何做?”。声明30个变量存储成绩?不是一个好办法。如果声明一个30元素的数组,是不是更合理。另外,如果要写30个条件语句来判断,也太过于繁锁。如果用for循环是不是更加合理。

2)练习太少,有解决方法,但不能用C语言实现。

问题的存在:思路不清淅,练习太少。

解决方法:多上机练习,多思考,举一反三。了解程序的运行过程和编码。

三、学习要点和重点:

◆ 第一章至第四章的:基础知识和理论知识必须要求能理解、领悟。也是学习其它语言的基础。

◆ 第二章、第三章提到很多的专业名词,如数据类型,变量与常量的区别,标识符的命名规则,表达式及各种运算符及输入输出函数基础

◆ 五章和第六章:程序的基本结构,学习完前六章,要求能理解程序运行和编码的过程。 ◆ 将我们的算法用编程语言来实现,主要是学习程序设计的逻辑性。也是学习其它语言的基础

◆ 第七章到第十一章:学习C语言的特色,更深入了解C语言。本章让学员加强空间的想象力。

◆ 第十二章:是文件的操作。考虑的是如何将程序的输出结果及相关信息用文件记录下来。

四、学习难度:

◆ 与日常的自然语言的表达不完全相同,所有结果要通过计算才能得。计算机没有想像能力和空间思维能力。计算机能运行,依靠程序员的严谨的命令来驱动。

◆ 语法格式多,知识点全面。应用时,要将零散的知识点有效有序的组合。

很多问题的解决方法是需要经验的。

回答:2006-06-19 11:55

提问者对答案的评价:

谢谢

共3条评论...其它回答 共2条回答评论 ┆ 举报

秋天的海

[学长] 就是耐心。。。我学c语言用了1年的时间。。。

只能算入门

回答:2006-06-06 16:40

共0条评论...评论 ┆ 举报

yishion521

[新手] 这是一位大虾的c语言学习之路,你可以参考一下:

我学C语言已经近两个月,《C语言程序设计》这本书我现在正在看第三遍,虽然上次考C等级时二级没过,但我相信以我现在水平是肯定可以通过考试,并且我已经第二次报了名。 学到现在我却仍然不知道该怎么去编程,当我想写一个游戏的时候才发现自己什么也不懂,我应该再看看什么书好呢?学之致用。

我询问了许多高手他们告诉我-----初学者都有这种困惑的。

选择了IT,就意味着艰辛,困苦与挑战!要学的东西还很多很多......不要想一步登天,不要想走捷径!(除非你只是玩玩,或者你有TALENT!)基础最重要!IT任重而道远,朋友,原你有一颗坚定的心,走下去,不会错!!!

在你学习的同时,还要注意一下IT的行情,多了解了解,摆好自己的位子,正确对待每一件事!我相信你一定会成功的!!!

真正的程序员用C,最有价值的程序员是用C的程序员。不是开玩笑!

C语言只是一个基础。一个能够向表达你的想法的基础,会了C能够写程序,但是不见得能够写出有实际意义的软件。(建议学习架构)

当你学到不自觉地使用这门语言时(大约写3万行代码就差不多了),你的c语言才可以说学会了。不是有个笑话吗?说的就是程序员的痴迷程度。我想应该有这样的精神才行。建议暂时不要看高级编程,多写代码、多看代码、培养风格、熟悉语法、最关键的是把握思想。 学C语言并不只是学语法那么简单,重要的是编程思想,难的是它在不同环境下的应用。这是一个漫长的过程,需要经验的积累。当燃,并不是说死死抓住C不放,但如果你目前还不知该怎样编程,建议在你有一种游刃有余的感觉之前,还是不要去碰什么C++,Java之类,那样你遇到的困难会更大。自己独立写完一个程序(无论大小)并看到他的正常运行时便会有一种成就感。不断培养这种成就感,循序渐进,进步是自然的事情。

首先

C语言是一个漫长的过程,它是基础,在很长很长......的时期内不会被淘汰。把C语言学好了,其他的,FOR EXAMPLE:C++,C#,JAVA,VC,VC++,VB,DELPHI......这些学起来就会比那些C语言基础不扎实的人要轻松得多!

了解一下库函数。连库函数都不了解怎么去编程?我也是刚听人家说要看库函数的。 初级阶段建议

我是听人说的,我现在可没这么大本事:

1.我觉的可以先试着去划一条sin曲线。

2.自己做一个类似tc的界面,这是菜单的练习。

3.练习中断的调用,键盘,鼠标,时间等。

4.tc是一个工具箱,tc下的库函数是各种各种的工具,我们要完成一件工作必须对工具熟悉,即使用的不熟悉,但至少也要有印象。所以《tc函数大全》是必备之物。所以要经常看tc下的库函数。

5.这是最重要的一条:just do it!我现在才明白nike 的广告的真谛,其实也是这个世界的很重要的一条just do it!

6.对于指针,我也不知到如何去用它,那些地方必须用它,我把握不住。

在TC程序中你可以嵌入汇编、可以混合编程。我觉得嵌入汇编这一点很诱人。它使你在理论上无所不能。混合编程有利于提高对编译方法的理解。

然后可以写俄罗斯方块,汉诺塔,贪食蛇,空间作战,吃豆等游戏

接着可以学MASM,C+MASM=NUCLAER!当然是做系统了。

学到这里就可以说C基本上是学会了。

c ------> c++ ----->数字逻辑设计、离散数学、数据结构与算法(这是一个学校的课程)

第二阶段

c++是c的提高,是面向对象的语言,也是到visual c的必经之路。现在就谈谈visual c的选择问题。

我想在国内来讲VC算不上RAD(快速应用开发)工具,因为VC开发的效率是很差的,对于一些客户端应用来讲开发效率是让人难以忍受的。此外还有一个开发的误区就是“只要用VC就可以什么事都自己做!”我想最致命的就是这一点,要修一栋楼我想不需要连砖瓦都要自己烧吧!

我上面的说法并不是在否定VC,我只说了开发中的一个方面,如果从维护的角度上来讲VC可以说是最好的工具。VC的好处在维护的过程中就会体现出来,我个人认为用VC开发出来的软件在维护过程中所花费的工作量要小于其他图形界面开发工具所开发的软件。当然这要求维护人员也必须是一个比较优秀的VC开发人员。

最后我说点在选择VC开发时的一些看法:

无论谁只要愿意都可以选择VC作为开发工具,但你必须有耐心和精力。

如果你更偏重于开发Windows后台服务,那么请选择VC,不要犹豫。

如果你软件执行效率是非常重要的衡量因素而且外部条件有限,那么请选择VC,不要犹豫。 如果你想完全的把握开发过程中的每一个环节,那么请选择VC,不要犹豫。

如果你的软件很复杂,而且以后会有其他人接手你的工作,建议在主程序中使用VC,并准备好充足的文档。

如果你想更多的了解系统的各种特性,而且希望自己的软件能够有更多的灵活性,那么请选择VC,不要犹豫。

如果你想开发一套好的开发包,那么请选择VC,不要犹豫。(因为C/C++更接近系统,C/C++开发出来的开发包可以很方便的被其他开发工具调用)

??

如果你下定决心,非VC不学,我祝贺你,你的选择没有错。

如果你因为什么原因放弃VC,我也祝贺你,你的选择没有错。

但是一个真正的程序员应选vc!

结 束 语

要学的还很多 慢慢来你会行的。祝你编程愉快!!!!!

推荐书籍

---------------------------------------------------------------------------------------------------------------------------

C语言:

清华谭浩强的《C语言程序设计》

清华钱能的《c++》

清华的《8086/8088汇编语言》

数据结构:

电子工业出版社de <<设计模式>>很不错.

学习心得

---------------------------------------------------------------------------------------------------------------------------

1.如果你是真的喜欢编程,那什么都不是问题的

2.实践。

3.找点趣味的小程序编一遍。看看数据结构。找更高级的c程序书看看

4.学习数据结构用c语言实现

5.找源代码看

6.自己编一个多模块的程序

7.再学一编C

8.继续学,然后找工作

多看书!

多实践!

多请教!

学学数据结构之后你会有新的发现一定

我前天去了一 家软件公司询问了一下啊,他们经理说用C 也行,但要很熟悉很熟练!! --

天使是上帝选召的优秀人类,彼此孤独的活着。在遇到另一个天使之前,天使总是试图接近人类,人类畏惧天使的美丽,美丽因为天使在空中而美丽,人与天使之间总有隔膜--因为畏惧。天使为此收起翅膀,最终天使终于决心品味孤独,展翅高飞。

相关推荐