如何学精C语言

1.从C语言初学者到C语言的顶尖高手,需要经历哪些步骤??
2.必须要读通哪些书才算精通C语言??具体点。
3.高中毕业,但是高中基础不好。可以学的好吗?
4.算法导论好难啊,我可以学会吗?

回答你的问题:

1、首先是看书,边看书边照着敲代码(看不懂没关系,要多练),
看书—>敲代码—>再看书—>再敲代码

2、《C语言入门经典》《数据结构》《算法导轮》《算法概论》

3、我大学才知道什么叫C语言,我现在已经能在acm/icpc大赛(大学生程序设计竞赛)上拿奖了,只要有心学,肯定能学好。

4、刚开始不要看这个,等你入门后再看,而且你要成为高手的话,那就是必看

学C最大的窍门就是 多练 ,不要只是看看,只有多敲键盘了,才能掌握的牢固
我感觉 学C语言 就要 : 多看书 、 多敲代码。

没事可以去网上的judge 上面去做做题(练习算法的),很多大学都有:
北大:http://acm.pku.edu.cn/JudgeOnline/
吉大:http://acm.jlu.edu.cn/joj/
等等 很多啦
如果你只是想学C语言基础 不想研究算法 那就不用了 《算法导轮》和《算法概论》也可以不用看了 就看看一般的C语言书籍 一般都能入门
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-02-02
对于书<<C程序设计>>(谭浩强) -> <<C与指针>> -> <<数据结构>>(严蔚敏)
-> <<算法导论>>

建议楼主把<<C程序设计>>(谭浩强)的习题重头到位做一遍(我就是这样子的),基础的却很重要,我一直认为学习C语言的目的: 为了更好的学习其他语言。不知道你为什么要把C语言学得很"精",难道想写操作系统、病毒?不需要太钻它,只要它使你锻炼得有严密的逻辑思维,较强解决问题的能力就行了,然后再好好学习你将来想要吃饭的语言,例如C++、Java、C#等...

如果你真的想以后能达到写操作系统内核的境界,那C语言得学得越精越好。

下面是转裁文章,写的比较好:

1、学好C语言,你可以很好地应付任何一种编程工具。

2、一定要多上机练习,通过程式了解相关知识。几经反复方得正果。

3、不要把学习C语言当成一种任务,更不要把它看成很难完成的任务。要充满自信,只要是一个智力正常的人都能学好C语言。始终保持游戏的心态,多发现其中的乐趣。当感到编程趣味无穷,那你在电脑方面将前程无量。

4、如果一个程式一时无法弄清楚最后暂时放在一边,过一段时间你可能会从其他的程式中悟出道理。

5、C语言是一个整体,各个方面是有机联系的,要从总体上把握它,不要把它割裂成互不关联的部件。

6、不要完全相信教材(包括本讲义),所有结论最好都上机验证。

谈及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语言。本章让学员加强空间的想象力。
◆ 第十二章:是文件的操作。考虑的是如何将程序的输出结果及相关信息用文件记录下来。

四、学习难度:
◆ 与日常的自然语言的表达不完全相同,所有结果要通过计算才能得。计算机没有想像能力和空间思维能力。计算机能运行,依靠程序员的严谨的命令来驱动。
◆ 语法格式多,知识点全面。应用时,要将零散的知识点有效有序的组合。
很多问题的解决方法是需要经验的。
第2个回答  2010-02-04
2.计算机专业是一个很枯燥的专业,但即来之、则安之,只要你努力学,也会发现其中的乐趣的。 3.记住:万丈高楼平地起!基础很重要,尤其是专业基础课,只有打好基础才能学得更深。 4.C语言是基础,很重要,如果你不学好C语言,那么什么高级语言你都学不好。 5.C语言与C++语言是两回事。就像大熊猫和小熊猫一样,只是名字很像。 6.请先学习专业课《数据结构》、《计算机组成原理》,不要刚开始就拿着一本VC在看,你连面向对象都搞不清楚,看VC没有任何用处。 7.对编程有一定的认识后,就可以学习C++了。(是C++而不是VC,这两个也是两码事。C++是一门语言,而VC教程则是讲解如何使用MFC类库,学习VC应建立在充分了解C++的基础之上。看VC的书,是学不了C++语言的。) 8.学习编程的秘诀是:编程,编程,再编程; 9.认真学习每一门专业课,那是你今后的饭碗。 10.在学校的实验室就算你做错一万次程序都不会有人骂你,如果在公司你试试看!所以多去实验室上机,现在错得多了,毕业后就错得少了。 11.从现在开始,在写程序时就要养成良好的习惯。 12.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路。 13.你会买好多参考书,那么请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码。 14.VC、C#、.NET这些东西都会过时,不会过时的是数据结构和优秀的算法! 15.记住:书到用时方恨少。不要让这种事发生在你身上,在学校你有充足的时间和条件读书,多读书,如果有条件多读原版书,你要知道,当一个翻译者翻译一本书时,他会不知不觉把他的理念写进书中,那本书就会变得像鸡肋! 16.我还是强调认真听专业课,因为有些课像《数据结构》、《编译原理》、《操作系统》等等,这种课老师讲一分钟能让你明白的内容,你自己看要看好几个月,有的甚至看了好几年都看不明白。 17.抓住在学校里的各种实践的机会,要为自己积累经验,就业时经验比什么都有用。 18.多去图书馆,每个学校的图书馆都有很多好书等你去看! 19.编程不是技术活,而是体力活。 20.如果你决定了要当一个好的程序员,那么请你放弃游戏,除非你是那种每天只要玩游戏就能写出好程序的天才! 21.你要有足够的韧性和毅力!有个高手出一一道题测试你的韧性和毅力:找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。 22.找到只属于你自己的学习方法。不要盲目的追随别人的方法,适合自己的才是最好的

还有,这篇文章也讲的很好:
http://tieba.baidu.com/f?kz=400919062
第3个回答  2015-10-11
学精c语言,不是一蹴而就的。

C语言是不需要任何基础的,只要是学过或自学过计算机基础就行了,说通俗一点就是你会用电脑就行了,然后买一本C语言的书,照着学就可以了,当然最好有老师,毕竟很多算法还是别人指点一下为好的。

我们大一的时候用的好像是清华大学谭浩强编的《C语言教程》,很不错的,基本上那本书你能吃透,什么C啊,FORTUAN啊都不成问题了,反正当时我们般几乎都过了C语言二级
我觉得学习编程最重要的是入门,如果你入门的时候有一个好的方 法和思路,打下比较扎实的基础,对今后的编程工作是很有益处的。即使在学习新的编程语言也无所谓,因为它们有很多相通之处,可以相互借鉴。

之本知识只是一个方面,当然,书本知识还是要掌握好的。但是要学好计算机方面的只是特别是计算机语言类,最重要的是编程能力,所以,经常上机实验锻炼是非常重要的,你可以使用Microsoft VC6.0软件(网上可下)进行编程,它可大大提高你的C语言编程能力,切记,不能只是纸上谈兵。

我当时学习pascal和C语言的时候是将书后的习题都做了一遍,感觉效果很好。
当然了,学习什么语言也要看你具体准备从事什么行业。例如你要进行嵌入式开发,C就是很好的选择,如果是Windows开发,那么VC就不错。还有数据库方面的开发、网络开发等等。不同的语言适合不同的方面。要看自己的选择的,呵呵 。

还有很多人说自己的基础很差,甚至中学毕业什么的。其实这个并不重要,比较说英语,在计算机语言里所用到的单词量很少,而且都是常用词,经常使用就记住了。当然,如果你要看原文资料或者帮助的话,专业词汇比较多,不过在金山词霸的帮助下,经常看,也是没什么大的问题的。至于数学什么的,其实数学只是培养你一个逻辑思维能力,在初学编程的时候影响不是很大。况且,作为一个基础编程人员来说,上面还有系统分析师、项目经理,他们会把需求分析、概要设计和详细设计做好的,你只要按照文档写代码就OK了。不过,要上更上一步的话,其他基础知识就非常重要了,毕竟你不能写一辈子代码。

在你学习好C语言以后,个人建议好好学习一下数据结构和软件工程。这两门对你的水平提高都是很有帮助的。特别是软件工程,它能够使你按照科学的工程方法进行软件开发,对今后的发展很有好处。

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
第4个回答  2010-02-05
1.从初学者到顶尖高手,没什么奇招秒路的,学编程就得脚踏实地一步一步,是会很枯燥的,不是传说中黑客的那个潇洒的样子,比你想像的要枯燥的多,形象的说其实就是个高级的打字员,所以贵在坚持,能坚持能忍受,你就离高手不远了。

2.基础的书就是清华大学谭浩强的那本,入门的,然后他会给你一些其他的进阶指导,你可以一点点的去理解,在结合工作需要去具体的深造,效率高而且会有成就感。

3.可以很肯定的告诉你,可以学,但是会比较累,在初始你可能感觉不到,因为算法都是一些简单的,为帮助理解的,若想学的精通必须有大学高数的基础,一些高级的算法是要用到高数中的算法公式的。

4.程序的算法是必学的,是需要你花大量的时间,去理解的,钻研的。
总之,想学你就要沉下心来,慢慢的向前滑翔,而不是飞翔。

不知道你会不会对C++感兴趣,这是我在学完C后转向C++的一些学习资料和心得.
1、继续学习完善C++基础知识,除了教材之外,推荐书籍:C++程序设计教程(钱能主编、清华大学出版社)
2、从语言本身继续深入学习C++语言本身的特点,对语言本身有更深入的认识,推荐书籍:C++Primer、The C++ Programming Language Special 3rd Edition、Thinking in C++、Effective C++、More Effective C++。
3、从算法和结构设计角度继续学习,在面向过程和面向对象的设计和应用深入学习,推荐书籍:数据结构C++版、设计模式、STL源码剖析。

其中,第1部分为基础知识的学习,2、3部分知识相通,为提高部分。
这是一般学习的渐进方法,语言都是通用的。你可以在使用编程软件时候利用些小技巧,帮助你理解程序运行的过程,加深记忆。
比如:首先保证整个程序可以编译通过,然后可以在编辑程序的状态下在你想运行中断的地方按 F9 打断点(再次按F9就可以取消)。运行程序的时候,按 F5 调试运行,这种状态下,可以看到内存中的存储状态,比如变量的值、函数的调用关系等,当程序运行到你曾经打的断点的时候就会暂时中断,你可以查看内存状态。

以下是所有学编程者要读懂的:
1.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?

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

3.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;

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

5.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;

16.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;

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

8.学习编程最好的方法之一就是阅读源代码;

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

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

11.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
相似回答