Ⅰ 我想学习c语言编程,大侠们给点建议
首先,计划只能自己制定,别人制作的就像你说,我没鞋子而且不会造鞋子,能不能帮忙造一个。别人制作的鞋子不一定适合你的脚。你需要的是制作鞋子的方法。
学C语言,首先,要有本好教材,推荐谭浩强的《C程序设计<第三版>》,
其次,要找个老师或者至少比你强的人,因为你是新手,所以从其他人那里学经验是很重要的,这可以帮你节省时间,更重要的是,指导你学习调试程序。
再次,你要多和别人交流,从交流中学习别人的算法、设计思路、学习方法,调试程序方法……
加入一个群固然是个不错的选择,我还是建议你在身边找个懂C语言的,这样会好的多。
,下面给你一个网摘,很不错的,虽然是关于C++的,但还是有用,你也收藏了吧:
下面的是学 C++ 时要注意的。
1. 把 C++ 当成一门新的语言学习(和 C 没啥关系!真的。);
2. 看《 Thinking In C++ 》,不要看《 C++ 变成死相》;
3. 看《 The C++ Programming Language 》和《 Inside The C++ Object Model 》 , 不要因为他们很难而我们自己是初学者所以就不看;
4. 不要被 VC 、 BCB 、 BC 、 MC 、 TC 等词汇所迷惑 —— 他们都是集成开发环境,而我们要学的是一门语言;
5. 不要放过任何一个看上去很简单的小编程问题 —— 他们往往并不那么简单,或者可以引伸出很多知识点;
6. 会用 Visual C++ ,并不说明你会 C++ ;
7. 学 class 并不难, template 、 STL 、 generic programming 也不过如此 —— 难的是长期坚持实践和不遗余力的博览群书;
8. 如果不是天才的话,想学编程就不要想玩游戏 —— 你以为你做到了,其实你的 C++ 水平并没有和你通关的能力一起变高 —— 其实可以时刻记住:学 C++ 是为了编游戏的;
9. 看 Visual C++ 的书,是学不了 C++ 语言的;
10. 浮躁的人容易说: XX 语言不行了,应该学 YY ; —— 是你自己不行了吧!?
11. 浮躁的人容易问:我到底该学什么; —— 别问,学就对了;
12. 浮躁的人容易问: XX 有钱途吗; —— 建议你去抢银行;
13. 浮躁的人容易说:我要中文版!我英文不行! —— 不行?学呀!
14. 浮躁的人容易问: XX 和 YY 哪个好; —— 告诉你吧,都好 —— 只要你学就行;
15. 浮躁的人分两种: a) 只观望而不学的人; b) 只学而不坚持的人;
16. 把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
17.C++ 不仅仅是支持面向对象的程序设计语言;
18. 学习编程最好的方法之一就是阅读源代码;
19. 在任何时刻都不要认为自己手中的书已经足够了;
20. 请阅读《 The Standard C++ Bible 》 ( 中文版:标准 C++ 宝典 ) ,掌握 C++ 标准;
21. 看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
22. 别指望看第一遍书就能记住和掌握什么 —— 请看第二遍、第三遍;
23. 请看《 Effective C++ 》和《 More Effective C++ 》以及《 Exceptional C++ 》;
24. 不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;
25. 和别人一起讨论有意义的 C++ 知识点,而不是争吵 XX 行不行或者 YY 与 ZZ 哪个好;
26. 请看《程序设计实践》,并严格的按照其要求去做;
27. 不要因为 C 和 C++ 中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;
28.C++ 绝不是所谓的 C 的 “ 扩充 ”—— 如果 C++ 一开始就起名叫 Z 语言,你一定不会把 C 和 Z 语言联系得那么紧密;
29. 请不要认为学过 XX 语言再改学 C++ 会有什么问题 —— 你只不过又在学一门全新的语言而已;
30. 读完了《 Inside The C++ Object Model 》以后再来认定自己是不是已经学会了 C++ ;
31. 学习编程的秘诀是:编程,编程,再编程;
32. 请留意下列书籍:《 C++ 面向对象高效编程( C++ Effective Object-Oriented Software Construction )》《面向对象软件构造 (Object-Oriented Software Construction) 》《设计模式( Design Patterns )》《 The Art of Computer Programming 》;
33. 记住:面向对象技术不只是 C++ 专有的;
34. 请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;
35. 把在书中看到的有意义的例子扩充;
36. 请重视 C++ 中的异常处理技术,并将其切实的运用到自己的程序中;
37. 经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;
38. 不要漏掉书中任何一个练习题 —— 请全部做完并记录下解题思路;
39.C++ 语言和 C++ 的集成开发环境要同时学习和掌握;
40. 既然决定了学 C++, 就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;
41. 就让 C++ 语言的各种平台和开发环境去激烈的竞争吧,我们要以学习 C++ 语言本身为主;
42. 当你写 C++ 程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写(参见 43 );
43. 别心急,设计 C++ 的 class 确实不容易;自己程序中的 class 和自己的 class 设计水平是在不断的编程实践中完善和发展的;
44. 决不要因为程序 “ 很小 ” 就不遵循某些你不熟练的规则 —— 好习惯是培养出来的,而不是一次记住的;
45. 每学到一个 C++ 难点的时候,尝试着对别人讲解这个知识点并让他理解 —— 你能讲清楚才说明你真的理解了;
46. 记录下在和别人交流时发现的自己忽视或不理解的知识点;
47. 请不断地对自己写的程序提出更高的要求 , 哪怕你的程序版本号会变成 Version 100.XX ;
48. 保存好你写过的所有的程序 —— 那是你最好的积累之一;
49. 请不要做浮躁的人;
50. 请热爱 C++!
补充 :
对 c++ 学习的一点感想,希望对初学者能有些帮助
1. 如果你以前从来没有接触过 c++ ,那么选择的第一本 c++ 教程就显得尤为重要,我认为你可以参照以下的标准进行选择:
a. 对标准 c++ 进行讲解,毕竟 c++ 比从前发生了很大的变化。
b. 要求全面,但不要很深,这要有助于你对于 c++ 有一个全面的认识,打好基础,并且易懂的教材还能加快学习的进度,让自己保持一种成就感。
c. 要有完整的范例来讲解每一个知识点如何运用,请注意这里所说的完整,并不是个个代码片断。因为由于你以前从未接触过用 c++ 进行编程,完整的代码可以使你有一个整体的概念,并且能够很快去进行大量的实践,因为变编程是从模仿开始,完整的代码恰恰告诉你了一个完整的步骤。不必自己去揣测。
d. 推荐:《 c++ primer plus 》
2. 当你有了一定的基础以后,就要选择一些书来迅速提高自己。这类书的特点是不仅仅教你如何去运用,而且要叫你如何去思考,并且你读起来也不是那么轻松。它意味深远,并不是你读一遍就能掌握的。
推荐:《 thinking in c++ 》《 effective c++ 》《 more effective c++ 》
《 c++ programming language 》 ... 《 c++ 沉思录》
3. 接下来就是对第二步所介绍的书籍进行反复的阅读,并且进行实践。由于这些书一位深远,每个人基于自己的基础都会有不同的收获,例如如果你的基础还没有达到某一高度,那么你就对一些精深的技术视而不见,不信?你可以试试,看看当自己有了一定提高之后再来读从前的一本书,你会发现许多新的东西。
Ⅱ C语言的心得编程的心得,求高手讲讲
学习C语言 我个人认为还是看国外教材比较好,比如经典的:
C语言: C Primer Plus 中文版 本书是备受好评.
开发工具是: VS2008 或者 VS2010
你也网络一下, 80X86汇编小站 网站里面有篇文章是写给C/C++语言初学者的.标题是:
如何正确的入门Windows系统下C/C++学习领域.
这文章准确的说明了学习C/C++的各种细节,你也可以通过这篇文章联系作者,跟他交流更多的编程问题。
Ⅲ C语言编程
这个是华军上的C/C++程序设计学习与实验系统
介绍如下:
原名《Turbo C/C++ for Windows 集成实验与学习环境》,现在已全面支持最新操作系统VISTA,它是从事一线教学的大学教师根据C/C++ 初学者的特点,量身定制的一个简单易用的 C/C++程序设计学习与实验软件(支持TC2/TC3、GCC、VC6四种编译器,没有使用日期限制)。与软件配套的《 C/C++程序设计教程(配有同步实验、流程控制语句动画演示、提供教程中所有程序实例、实验、作业中的源代码(全部用VC6编译器调试通过))》融入了作者多年的教学和学习经验、编程建议、编程感悟,新增读书笔记功能有利用户 记录教程中的重点、难点、学习心得体会,针对用户学习教程中遇到的问题开通了疑难问题解答论坛等,同时,为了便于C语言学习,加入C语言学习指导、入门程序实例、典型源程序、典型的函数算法,课程设计指导、课程设计源程序、 Visual C++6.0中英文编译错误信息同步显示功能(并配有60多种同步的语法错误程序实例、修改方法等)、 Turbo C2.0 中英文编译错误信息同步显示功能、Turbo C++3.0常见编译错误信息、C语言专业词汇的中英文对照、二级 C 语言的真题笔试试卷及答案与分析和上机模拟试题和详尽的答案与分析等大量的学习资源。另外 “编程日记” 功能可以让你记录你的 C 语言学习历程, “资料管理” 功能让你大量的下载资料不再难找
安装注意事项:为了保证软件的正常运行,请不要安装在中文文件夹中,采用默认安装路径即可。
2009.3版本更新
不知道你是打算用来做什么用的?是学习用还是工作用的?
另外,虚机团上产品团购,超级便宜
Ⅳ c语言编程我想精通c语言求大师指点
如果你是想学C语言,我推荐还是在Linux下进行吧。
至于你说的用windows人多,不学windows不行。其实Linux的用途更加广泛,有一句叫“即使你看不到,Linux确已统一天下”。Windows你看到的只是桌面系统用的人很多。
Linux现在广泛用在嵌入式系统和服务器,用途广泛,而且在Linux下做开发的人也并不少,资源丰富。Linux本身就是一个开源的系统,你可以简单的获得到它的源码进行阅读和学习,你会慢慢发现Linux C的美妙,同时Linux上也有很多好用的开源软件供你去学习。
关于学习过程,首先找一本基础的C语言书读懂读透,然后学习数据结构,然后学习《unix环境高级编程》。前两本书我没说具体书名,这类书很多,你随便找一本就行,不要贪多,一本足够。在这一学习过程要多动手练习,这样才能养成好的编程习惯和思维。在这之后,你就可以选择一个方向在进行深入学习,比如是服务器上的程序开发,还是嵌入式应用开发,或者Linux驱动开发等等。
Ⅳ 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语言编程 心得体会
背关建词语,明白每个词的意思,写程序时,再一套入就可以了,考试保你80分以上,我就是这么学的!!!
Ⅷ 学完谭浩强的《c语言程序设计》就等于学完了c语言的所有功能了吗,这本书还有没有讲到的c的知识吗
看了你这问题,想起了我自己来。
我自学了 谭浩强的《c语言程序设计》以为C学的很好了,当时记得大概用了一个月的时间。
当时还很自负的写了一篇文章<c语言的数组、指针、函数传递释义>,想想真是可笑。
然后就去看数据结构,结果在编程的时候发现很多基础的东西都不知道……
经朋友推荐看了c++primer第四版,现在 才知道什么是基础。才知道C语言的强大。
谭浩强的《c语言程序设计》我感觉只能算是一本少儿读物,想继续C的话,看一下 C语言四书五经。个人认为现在你最好去学C++.
Ⅸ 关于C语言编程
输入算式:
2 + 5
2 + 5=7
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define true 1
#define false 0
#define OPSETSIZE 8
typedef int Status;
unsigned char Prior[8][8] = { // 表3.1 算符间的优先关系
// '+' '-' '*' '/' '(' ')' '#' '^'
/*'+'*/'>','>','<','<','<','>','>','<',
/*'-'*/'>','>','<','<','<','>','>','<',
/*'*'*/'>','>','>','>','<','>','>','<',
/*'/'*/'>','>','>','>','<','>','>','<',
/*'('*/'<','<','<','<','<','=',' ','<',
/*')'*/'>','>','>','>',' ','>','>','>',
/*'#'*/'<','<','<','<','<',' ','=','<',
/*'^'*/'>','>','>','>','<','>','>','>'
};
typedef struct StackChar{
char c;
struct StackChar *next;
}SC;
typedef struct StackFloat{
float f;
struct StackFloat *next;
}SF;
SC* Push(SC *s,char c){
SC *p=(SC*)malloc(sizeof(SC));
p->c=c;
p->next=s;
return p;
}
SF* Push(SF *s,float f){
SF *p=(SF*)malloc(sizeof(SF));
p->f=f;
p->next=s;
return p;
}
SC* Pop(SC *s){
SC *q=s;
s=s->next;
free(q);
return s;
}
SF* Pop(SF *s){
SF *q=s;
s=s->next;
free(q);
return s;
}
float Operate(float a,unsigned char theta, float b) {
switch(theta) {
case '+': return a+b;
case '-': return a-b;
case '*': return a*b;
case '/': return a/b;
case '^': return pow(a,b);
default : return 0;
}
}
char OPSET[OPSETSIZE]={'+' , '-' , '*' , '/' ,'(' , ')' , '#','^'};
Status In(char Test,char* TestOp) {
int Find=false;
for (int i=0; i< OPSETSIZE; i++) {
if (Test == TestOp[i]) Find= true;
}
return Find;
}
ReturnOpOrd(char op,char* TestOp) {
for(int i=0; i< OPSETSIZE; i++)
if (op == TestOp[i]) return i;
}
char precede(char Aop, char Bop) {
return Prior[ReturnOpOrd(Aop,OPSET)][ReturnOpOrd(Bop,OPSET)];
}
float EvaluateExpression(char* MyExpression) { // 算法3.4
// 算术表达式求值的算符优先算法。
// 设OPTR和OPND分别为运算符栈和运算数栈,OP为运算符集合。
SC *OPTR=NULL; // 运算符栈,字符元素
SF *OPND=NULL; // 运算数栈,实数元素
char TempData[20];
float Data,a,b;
char theta,*c,x,Dr[]={'#','\0'};
OPTR=Push(OPTR,'#');
c=strcat(MyExpression,Dr);
strcpy(TempData,"\0");//字符串拷贝函数
while (*c!= '#' || OPTR->c!='#') {
if (!In(*c, OPSET)) {
Dr[0]=*c;
strcat(TempData,Dr);//字符串连接函数
c++;
if (In(*c, OPSET)) {
Data=atof(TempData);//字符串转换函数(double)
OPND=Push(OPND, Data);
strcpy(TempData,"\0");
}
} else { // 不是运算符则进栈
switch (precede(OPTR->c, *c)) {
case '<': // 栈顶元素优先权低
OPTR=Push(OPTR, *c);
c++;
break;
case '=': // 脱括号并接收下一字符
OPTR=Pop(OPTR);
c++;
break;
case '>': // 退栈并将运算结果入栈
theta=OPTR->c;OPTR=Pop(OPTR);
b=OPND->f;OPND=Pop(OPND);
a=OPND->f;OPND=Pop(OPND);
OPND=Push(OPND, Operate(a, theta, b));
break;
} // switch
}
} // while
return OPND->f;
} // EvaluateExpression
void main(){
char s[128];
puts(" 输入算式:");
gets(s);
printf("%s\b=%g",s,EvaluateExpression(s));
getchar();
}