我初学C语言,对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++,这个东西虽然比较大块头,但是一旦安装好了,用起来很方便。

一本学习教程,现在C语言教材多如牛毛,但推荐大家使用《C语言程序设计》谭浩强主编 第二版 清华大学出版社,此书编写的很适合初学者,并且内容也很精到。

除此以外,现在有很多辅助学习的软件,毕竟现在是Window时代了,学习软件多如牛毛,不象我们当初学习,只有读书做题这么老套。我向大家推荐一个“集成学习环境(C语言)”,里边的知识点总结和例程讲解都非常好,还有题库测试环境,据说有好几千题,甚至还有一个windows下的trubo?C,初学者甚至不用装其它的编译器,就可以练习编程了,非常适合初学者。还有一个“C语言学习系统”软件,不过感觉只是一个题库系统,如果你觉得题做的不够,不妨也可以试试。

2:葵花宝典
学习计算机语言最好的方法是什么?答曰:读程序。
没错,读程序是学习C语言入门最快,也是最好的方法。如同我,现在学习新的J#,C#等其他语言,不再是抱着书本逐行啃,而是学习它们的例程。当然,对于没有学过任何计算机语言的初学者,最好还是先阅读教程,学习完每一章,都要认真体会这一章的所有概念,然后不放过这一章中提到的所有例程,然后仔细研读程序,直到每一行都理解了,然后找几个编程题目,最好是和例程类似的或一样的,自己试图写出这段已经读懂的程序,不要以为例程你已经读懂了,你就可以写出和它一样的程序,绝对不一定,不相信你就试一试吧,如果写不出来,也不要着急,回过头来再继续研究例程,想想自己为什么写不出来,然后再去写这段程序,反反复复,直到你手到擒来为止,祝贺你,你快入门了。

3:登峰造极
写程序的最高境界其实就是掌握各种解决问题的手段(数据结构)和解决问题的方法(算法)。?
是不是写出底层程序就是程序设计高手呢?非也,写底层程序,无非是掌握了硬件的结构,况且硬件和硬件还不一样,要给一个芯片写驱动程序,无非就是掌握这块芯片的各种寄存器及其组合,然后写值读值,仅此而已。这不过是熟悉一些io函数罢了。
那么怎样才算精通程序设计呢?怎样才能精通程序设计呢?举个例子:你面前有10个人,找出一个叫“张三”的人,你该怎么办?第一种方法:直接对这10个人问:“谁叫张三”。第2种方法:你挨个去问“你是不是张三?”,直到问到的这个人就是张三。第三种方法:你去挨个问一个人“你认不认识张三,指给我看”。不要小看这个问题,你说当然会选第一种方法,没错恭喜你答对了,因为这个方法最快,效率最高,但是在程序设计中找到解决问题的最优方法和你用的手段却是考验一个程序员程序设计水平的重要标志,而且是不容易达到的。刚才这个问题类似于数据结构和算法中的:Map数据结构,穷举查找和折半查找。所以掌握好数据结构和一些常用算法,是登峰造极的必然之路。

参考资料:http://blog.sina.com.cn/s/blog_493fc024010003ge.html

温馨提示:内容为网友见解,仅供参考
第1个回答  2008-03-01
如何学习?
找一些项目来做,多做项目,才能真正学到东西

网站:
www.codeguru.com
www.codeproject.com
www.vckbase.com
www.csdn.net

软件:
http://www.codeguru.cn/fav/soft.htm

教程:
C函数实例参考手册
http://www.codeguru.cn/CPP/CExample/
C\C++实例参考手册
http://www.codeguru.cn/CPP/cppExample/
Win32Api实例参考手册
http://www.codeguru.cn/VC%26MFC/Win32ApiExample/
MFC实例参考手册
http://www.codeguru.cn/VC&MFC/MFCExample/
HTML实例参考手册
http://www.codeguru.cn/HTML/HtmlExample
Transact-SQL实例参考手册
http://www.codeguru.cn/Script/TransactSQLExample
ASP对象实例参考手册
http://www.codeguru.cn/Script/ASPObjectExample
Windows脚本实例参考手册
http://www.codeguru.cn/Script/WinScriptExample
十部算法经典著作 合集
http://www.codeguru.cn/cpp/10book
二级试题全集
http://www.codeguru.cn/cpp/2JiCShiTiJi
高质量C++/C编程指南
http://www.codeguru.cn/cpp/AdvanceC++-CProgramGuide
应用C++技术构建优质软件
http://www.codeguru.cn/cpp/AppliedCpp
ASCII码表
http://www.codeguru.cn/cpp/ASCII
C\C++语言程序百例
http://www.codeguru.cn/cpp/C&&C++YuanYanChenXuBaili
C++编码规范与指导
http://www.codeguru.cn/cpp/C++CodingGuide
C++PrimerPlus4th
http://www.codeguru.cn/cpp/C++PrimerPlus4th
C++语言程序设计课件(作者:郑莉)
http://www.codeguru.cn/cpp/C++ProgramingZhengLi
C++语言程序设计
http://www.codeguru.cn/cpp/C++YuYanChengXuSheJi
C语言函数示例集
http://www.codeguru.cn/cpp/CFunctionExamples
C高级编程技术
http://www.codeguru.cn/cpp/CGaoJiBianCheng
C语言技术文章
http://www.codeguru.cn/cpp/CLanguageArticle
C++疑难解答
http://www.codeguru.cn/cpp/CppAQ
C++实践之路
http://www.codeguru.cn/cpp/CppInAction
C++应用程序例解
http://www.codeguru.cn/cpp/CppProgramLiJie
C++参考
http://www.codeguru.cn/cpp/cppreference
CPrimerPlus5thEdition习题答案
http://www.codeguru.cn/cpp/CPrimerPlus5thEditionAnswer
C语言编程宝典之一
http://www.codeguru.cn/cpp/Cprogramdict
C语言参考手册
http://www.codeguru.cn/cpp/Creference
C语言学习和精华文摘
http://www.codeguru.cn/cpp/CStudyAndArticle
数据访问模式
http://www.codeguru.cn/cpp/DataAccessPatterns
数据结构与算法综合资料库
http://www.codeguru.cn/cpp/DataStructsLibrary
数据结构-严蔚敏
http://www.codeguru.cn/cpp/DataStructYanWeiMin
Effective C++
http://www.codeguru.cn/cpp/EffectiveCpp
GenericProgramming
http://www.codeguru.cn/cpp/GenericProgramming
设计模式迷你手册
http://www.codeguru.cn/cpp/MiniDesignPattern
经典排序算法
http://www.codeguru.cn/cpp/SortingAlgorithms
谭浩强C语言
http://www.codeguru.cn/cpp/TanHaoQiangC
TheC++ProgrammingLanguage3rdEd
http://www.codeguru.cn/cpp/TheC++ProgrammingLanguage3rdEd
TheCprogrammingLanguage
http://www.codeguru.cn/cpp/TheCprogrammingLanguage
TurboC2.0集成开发环境的使用
http://www.codeguru.cn/cpp/TurboC2ShiYong
用VC开发ACTIVEX
http://www.codeguru.cn/VC&MFC/ActiveXProgramingWithVC
用DirctX9进行高级3D游戏程序设计
http://www.codeguru.cn/VC&MFC/Advanced3DGameProgrammingwithDirectX9
APracticalGuideUsingVisual C++andATL
http://www.codeguru.cn/VC&MFC/APracticalGuideUsingVisualCandATL
21天学会VC数据库编程
http://www.codeguru.cn/VC&MFC/DatabaseProgrammingWithVisualC6In21Days
STL轻松入门
http://www.codeguru.cn/VC&MFC/EasySTL
InsideAtl
http://www.codeguru.cn/VC&MFC/InsideAtl
COM+组件服务技术内幕
http://www.codeguru.cn/VC&MFC/InsideCOM+
MFC参考手册
http://www.codeguru.cn/VC&MFC/MFCReference
Windows网络编程技术
http://www.codeguru.cn/VC&MFC/NetworkProgramingForMicrosoftWindows
OGRE手册
http://www.codeguru.cn/VC&MFC/OGREManual
OpenGL基础图形编程
http://www.codeguru.cn/VC&MFC/OpenGLJiChuTuXingBianCheng
MFC程序设计
http://www.codeguru.cn/VC&MFC/progmfc2
VC技术内幕
http://www.codeguru.cn/VC&MFC/ProgramingVC
Windows核心编程
http://www.codeguru.cn/VC&MFC/ProgrammingApplicationsforMicrosoftWindows
21天学会ActiveX编程
http://www.codeguru.cn/VC&MFC/TeachYourselfActivexIn21Days
游戏编程大师技巧(第二版)
http://www.codeguru.cn/VC&MFC/TricksofWinGameProgrammingGurus2ed
VC编程经验总结
http://www.codeguru.cn/VC&MFC/VCBianChengJianYanZongJie
VC编程资料
http://www.codeguru.cn/VC&MFC/VCBianChengZiliao
VC常见问题集(中文)
http://www.codeguru.cn/VC&MFC/VCFaqsCN
VC高级编程
http://www.codeguru.cn/VC&MFC/VCGaoJiBianCheng
vchome图形图像编程技术篇
http://www.codeguru.cn/VC&MFC/vchomeGraph
VC知识库
http://www.codeguru.cn/VC&MFC/vckbase
VC语言参考手册
http://www.codeguru.cn/VC&MFC/VCLANG
vc++ 编程指南
http://www.codeguru.cn/VC&MFC/VCProgramGuide
Windows程序设计
http://www.codeguru.cn/VC&MFC/WindowsProgramming
Winsock程序员疑难解答
http://www.codeguru.cn/VC&MFC/WinsockProgrammerFAQ
Microsoft编程精粹
http://www.codeguru.cn/VC&MFC/WritingCleanCode
第2个回答  2008-03-01
我是学C语言的,现在刚刚学完C++ ,,,对于你提出的问题,我想,我认为啊,应该没有谁能做出正确的选择。
C语言,对于初学者来说,真是个难题,我刚开始学的时候,也很头痛。锁事都有一个原理,难者不会,会者不难。。
C语言更为蹊跷,刚开始,你学的不懂,更有可能的就是学点忘点。很多好学的学生,总是在一个问题上叫,不会,我就要弄懂。这种思想,是学不了语言的,编程不讲一个问题,你应该买些辅助工具书,来看一看,不要太认真,平时可以和同学探讨一下问题,这样增加记忆。
更重要的是,想学好C语言,不是个很简单的事,如果说,不像语文英语一样,学过了,记下了,平时练练口语什么的。就可以了。C有很大的不一样,学过了,记下了,平时练练学过的什么。这学的,你记下了,后学的,你也记下了,返过来,你只学会了,书面的东西。
多说什么我也挺累的,打字也不好玩!!!简单的说,想学好C语言,就不能报着一定要学好的心理。计算机,不是固定的。你把你这个学期的认务,初步的学完了。抽出时间,返回来,从头开始,这时你会感觉,哎!C语言原来也是很简单的事啊。很一遍感觉难的地方,你都可以解决了,不是你学会了这些。是因为C语言就像食物连一样,最后的,也和最前的结合。如果你想学到哪,弄懂到哪,这样,你的压力可能大于你的心理承受能力。学会我服你,学不会正常。

我也就是这样了,也没有太好的学习方法。只知道,编程是要学几遍才可以懂的事。 谢谢观赏
如果有英语方面好的学习方法,介绍给我,thank you
我学英语,怎么也是学不会,单词,背过了,返回来,再背一遍,一说单词,我都快知道,在那列那行了,就是不会用,结合不起来。一起一整页英语,我就头痛。。。
第3个回答  2008-03-01
学习任何一种语言,有一本好的教材是很重要的,编的不好的教材会造成一些错误或不全面的理解。必须要注重动手的能力,学到一定的程度后,要尝试去写一些应用程序。注意循序渐进的方法,勿太好高骛远。

初学C语言对C指针的疑惑
&是C的取地址运算符。3、我想在你对汇编很熟悉的基础上,通过上述说明,不难体会定义指针的数据类型对于指针的作用了吧,也就是说某一种数据类型的指针在一般应用情况下,只用于记录具有相同数据类型变量和存储空间的地址。这部分东西本身就是不容易理解,不知道说了半天是不是能帮上你一点。我想你有汇...

关于C语言一个对菜鸟来说比较艰难的问题。大神请帮忙。。万分感激...
因为到根号 i 它都没有因子的话,它就没有因子了,你想,它要是有个大于根号 i 的因子,用 i 除以这个因子,肯定会得到一个小于根号 i 的因子,因此只要判断到根号 i ,就知道它是不是质数了

C语言作业,万分感激!!!
else if(x>=200&&x<500)return 0.8*x;else if(x>=500)return 0.6*x;}

C语言一个很急的问题
因为安装路径和原来的不一样,你需要配置一下编译环境。。 我手上已经没有这个古董编译器了,所以我也不知道怎样跟你说。。。!

我是一个初二学生,学编程应该学什么语言
pascal吧!语法比较规则!非常适合初学者!看下吴文虎那本蓝色那本书!很基础的!到高中有信息学竞赛!慢慢坚持吧!多读点代码!循序渐进!其实你学到一定程度后就会发现其实编程语言都是差不多的!关键就是算法!

同学感谢信
不仅我们化学院,我所认识的很多其他院系的朋友,无论他们是否以各种方式明确向您表示过感谢,只要他们曾接受过您的帮助,或看到您对其他同学的关心,无人不对您抱着尊敬与感激之情。 很感谢,来到这个曾经陌生的地方,第一个投来善意目光的是您。很感谢,阵雨天,未收的衣被,已被妥善保管的是您。 很感谢,每每倒完...

单片机c语言WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCE...
这是指有变量或者代码块没用被用到 一般L16的警告可以忽略的,对程序没有影响的 但编译时的warning:unreferenced local variable这个是你代码有错误了 你这代码写的太乱了,没有格式,也没备注,看着太累 你发到我邮箱abc3844@126.com,顺便告诉我实现的功能是什么 我帮你修改下 ...

...小弟在自学51单片机,想请大侠们赐一个小程序给我学习,万分感激...
你这第一下就想玩这难度要大点,因这有个控制亮度的麻烦点,你最好先玩玩流水灯啊,数码管自动加数啊,(本以后你这中也要用的)完成后再来玩你这才会达到事半功倍的效果,这类程序 网上多的是,你可根据你想玩C语言还是玩汇编去找相应的下载....

...什么C语言什么什么的,求高手把做程序和游戏的一些基础教材
《C游戏编程从入门到精通》这本书应该可以满足你的要求了 不过建议你先看一看谭浩强的《C程序设计》吧 这是基础

用C语言怎么写类似s=2+22+222+2222+22222?希望能给个详尽的解题过程,主 ...
首先,n个2的计算方法是2*(10的n次方)+ (n-1)个2 也就是说,比如已经求出了2222后,变到22222只要加上2乘以10的5次方 而该试首相已知,就是2,那么第二项就是2+2*(10的1次方),第三项就是2+(第二项的结果)*(10的2次方),第四项就是2+(第三项的结果)*(10的3次方),...

相似回答