首先声明啊,写这个是因为一些加我QQ的朋友问我学习经验,我才写的。

另外,如果是二级党,那么请用谭浩强老师的书。然后你就可以不用看了。倒不是有偏见,而是我写的这个东西,根本不是为了考试,而是为了和新手交流怎么学习C语言,怎样编写代码的。

【如果要看,最后三条那是一定要看的。】

如果不是二级党,那么,开始:

一、      目的

我们做什么事情都是有目的的,比如说我,学习编程的最终目的就是从事软件行业。这个目的要十分明确,不能说想学编程,那么学编程的目的呢?当然如果仅仅是兴趣,我觉得这就是最光明正大的目的。

二、      有一个学习目标

还是以我自己为例,我刚开始学C语言的时候,就想要写一个学生信息管理系统,于是在我学习C语言八个月之后,终于完全有能力写出这个小项目,对于以后从事软件开发总算迈出了一小步。

读者应该明白了,我说的这个目标就是说你在学完C语言之后,要能写出一个东西,它可能是学生信息管理系统,可能是一个小游戏,还可能是一个外挂。总之你要有一个目标,这个目标不一定要多高,但一定要是你能力的体现。

三、      要有的学习工具和环境

学习是讲究环境的,还有一句话说:“工欲善其事,必先利其器。”

我觉得学习C的话,要有这么几个条件:

1、         电脑

不一定能上网,但一定要有,不然天天用C4(可以在安卓手机上写C语言程序的东西)搞,累死个人。

如果是笔记本的话,最好买一个外置的键盘。我不知道是不是所有写代码的人敲键盘的时候都很大力,反正我是,尤其是回车键。不然你每次都那么大力敲,本子用不了几天不就敲碎了。

2、         书

C Primer plus

The C programming language

C语言程序设计现代方法

这三本书随便选一本。至于这三者之间的差异,我就不说了,C语言新手可以真么选择:

有过其他语言基础,比如VB ,javascript,actionsript之类的,可以看第一本

之前有学过一点C语言的同学,可以选第二本

之前没有任何基础的,可以选第三本

当然,这只是我的理解。其实对于新手来说,学习语法的话,这三本哪一本都可以。

3、         最好有一个固定的地方和学习时间表

在自己习惯的地方,效率应该会高一点。

至于学习时间表怎么安排,我就不说了。。。我自己的时间都安排不好的,如果你自己是那种很会安排时间的人,那么你一定要坚定的保持这个巨好无比的习惯。

4、         要保存你的代码

也许新手觉得我才刚开始学习,那么我最开始写的代码肯定错误百出,甚至可能不堪入目,为什么还要保存?

每个高手都是从新手过来的,高手第一次写代码的时候,也许还不如你呢。

保存自己所有的代码,以后自己能力提上去了,就可以看出自己的成长,也可以看出自己还有哪些坏习惯没有改掉,又可以作为自己的宝贵回忆,总之好处多多。

我以前把代码都保存到电脑上了,后来重做系统的时候,竟然一个不小心,忘了备份,结果就悲剧了。。。于是我学会使用CSDN博客,反正博客可以写很多,再不行就打包保存到网盘上。总之作为一个程序员,备份那是相当滴重要。

5、         善于利用百度,google之类的网站

不是每个人都可以自己搞定所有的问题,所以当你遇到自己搞不定的问题的时候,完全可以询问好友,老师,同学,也可以度娘之,google之,搞不定问题并不可耻,如果搞不定还不承认,自己闷头瞎搞,那就是愚蠢了,所以我们不仅要不耻下问,还要会不耻上问。

四、      学会坚持,更要学会休息

有一个伟人说过:“身体是革命的本钱。”

编程本身就是一个强脑力加强体力的工作,所以身体就显得尤为重要。

如果你无论如何都写不出代码,无论如何都看不懂指针,无论如何都搞不定栈和队列,那么类似于这种情况,就远离电脑,游戏神马的也不要搞,就直接关掉电脑,好的就这样,然后离开去打球,去溜达,去勾搭小姑娘等等能让你放松的活动。

至于坚持,坚持的越久的人,收获的越多,看的风景也就越多。

编程毫无疑问是一个枯燥,乏味,劳累,无趣……的工作,对于那些以编程为乐的人,或许不觉得,对于不那么喜欢编程的程序员,就要学会坚持了。我相信每一次终于搞定一个程序之后,那种成就感,可以冲淡一切疲惫。

五、      关于编译器那点事儿(可以不看)

可能你的书上推荐的是VC6.0,可能是Tubor C,也有可能是我给你推荐CodeBlocks,还有可能是你自己用C-Free,其实用哪个无所谓,对于刚开始学C的新手来说,学会  C的规则是最重要的。

例如说我,刚开始电脑是WIN7的,VC总是不能用,于是搞了一个C-Free,后来换成XP系统,开始用VC,再后来感觉CodeBlocks比较好,于是又换了。

CodeBlocks对于C99的支持比VC6要好,当然你用VS的话,也是可以的,因为VS加上助手,那简直碉爆了。

我现在是用UE写代码,安装了一个CodeBlocks,把环境变量配置好,然后在CMD里面用GCC命令编译运行程序,因为这样生成的中间文件少。

再有就是,不管你是用IDE也好,用代码编辑器也好,最好把窗口的背景色设置成沙绿色,因为白色背景实在是很刺眼。至于怎么设置,请度娘之。用Linux的同学,就自己想想办法吧,你都会用Linux了,这个应该难不倒你。

六、      语法学习经验

怎样学习语法,这是个问题,如果之前学过VB之类的也许还好一点,但是对于没有任何编程基础的人,也许刚开始学习语法的时候,会遇到各种问题,这里给出我的经验:

首先,不要过度追求细节。新手学C语言这个事儿,过度追求细节没有好处。大致理解,不求甚解也就行了,毕竟刚开始学,大致能明白怎么回事就行。就好像学习数学一样,你也许一个概念也背不出来,但是你明白原理的话,一样可以计算。

其次,语法记不住没有关系。曾记得我刚开始用指针那会儿,不看书,都不知道指针是啥玩意儿。所以,你会运用语法就行,不用死记硬背。

再次,遇到语法问题,不要纵容自己忽略,否则会养成错误认知,以后再想改就不好改了。

最后,如果你的英语很牛,那么你就看C语言标准吧,关于语法,没有比这个更好的东西了。

七、      编写代码的经验

1、         代码风格清晰要比高效更重要

代码的风格是一个很大的问题。你要像写十四行诗一样写代码。

有很多新手可能会在一行代码里面写好几个语句,也许你觉得这样写起来很快,但是这样是不行的,用我的话说,那就是错误,而且是很严重的错误。如果让你在杂乱无章的代码里面找一个编译器检测不出来的错误,那么你会很辛苦。如果代码超过几百行(也许会有几千行),你的风格还是那么糟糕透顶的话,那简直是无法想像的事情。

推荐新手在有一定的能力之后,最晚也要在学会函数的时候,可以看看《C/C++高质量代码》这本书,我现在的代码风格就是按照这本书写的,记得外国也有一本书是说代码风格的,具体名字忘了,可以自己查一下。

总之风格!风格!风格!风格!很重要!!巨重要!!无比重要!!!

2、         注释

也许新手又会觉得我小题大做了,我自己写的代码难道我自己还不清楚么?写注释要一直切换输入法,会影响写代码的速度,一旦修改代码就要修改注释甚至重写注释,有的时候注释好难写……是的,写注释好累,写注释好麻烦,写注释好墨迹。但是以后工作以后,没有几个项目是自己一个人搞定的,如果你的代码一行注释都没有,那会对别人造成很大的困扰。如果你看自己几个月以前甚至是几年以前的代码,一行注释都没有,那看起来会相当辛苦。

注释可以帮助我们更好的理解代码,可以帮助我们更加快速的阅读代码,可以加快我们的思维速度,可以……总之好处太多了。

有一句话说:“每一个不写注释的程序员,***都想注释那么长。”,额,这句话请自己百度之。

3、         怎样修改错误代码

我们几乎天天遇到这种情况:我写的代码没有问题啊,为什么运行不正确?或者说编译器没有报错,为什么就是无法运行呢?

这是因为你的代码有错误,当然这是一句废话。。。。

如何修改自己错误的代码?

如何快速的找到编译器都找不到的错误?

如何尽量的少写错误的代码?

其实想要减少错误,想要避免编译器检测不出来的错误,是很简单的事情,那就是调试,当然我反正是不会调试,如果你会的话,请留下你的QQ号码,或者博客地址,或者其他联系方式,电话号码也是可以的,只要你能教会我调试。

我一般都会在关键变量附近添加printf语句,这样可以随时监测变量的变化情况。

我一般会先写小规模的测试代码。比如要你输出50000以内的素数,我会先输出100以内的,如果有错误的话,这样不是很容易找?所以对于数据规模比较大的问题,可以先缩小规模,然后搞一个通用代码,然后扩大数据规模。

我一般会把问题分成几个模块,然后一个一个的搞定。比如输入两个整数,然后输出最小公倍数和最大公倍数。

我会先完成公倍数的功能,

再把公倍数的代码注释掉,

再完成公约数的功能,

最后去掉注释,最后测试。

对于要求比较多的问题,可以一步一步来,不要着急,饭要一口一口的吃,代码要一点一点的写。

4、         写不出来代码怎么办?

其实不仅仅是新手,每个程序员都有写不出代码的时候,那种摔鼠标、砸键盘就是写不出代码感觉太憋屈了,太难受了,但是我们写不出来有什么办法?写不出来就不要谢了嘛。。。。。

如果写不出代码,可能是那个问题对你来说难度太高了,放弃也是一种聪明。

如果写不出代码,可能是你的思路本身就是错误的,应该重新设计解体思路。

如果写不出代码,可能是你没有查阅足够的资料,比如求最小公倍数。最小公倍数=两数之乘积  / 最大公约数。你连这个东西都没有查到,你写不出来能怨谁?

如果写不出代码,可能是你太累了,休息一下。

如果写不出代码,可能是你应该参考别人的代码的时候了,其实照抄别人的代码有时候也是极好的。

如果写不出代码,可能是你根本没有充分的分析问题,一上来就写代码,没有足够的规划,写代码当然是一团糟。

写不出代码的原因很多,但是这个时候的心态却就那么相似。写不出代码,要仔细考虑原因,是不是自己太着急了?是不是自己搞错方向了?是不是这个问题本身就有问题呢?是不是自己耻于请教别人呢?是不是自己懒得查资料呢?总之这个时候,一定要Hold住,不要因为写不出代码就真的摔鼠标砸键盘了,整坏了,要花钱滴。。。。

写不出代码,是程序员经常遇到的事情,不必往心里去,也许睡一觉,梦里就写出来了呢?

5、         怎样写出很高级的代码?

新手看高手的代码,总觉得好简洁,好厉害!

高手看大神的代码,总觉得我靠,我怎么看不懂,但是运行起来好快啊!

这个东西是写给新手看的,所以怎样写出高效率,巨简洁的代码,要在具有一定的水平之后再讨论。对于新手来说,能够解决问题就可以了,不必对自己的要求太苛刻。

八、      怎样取舍?

我认为新手学会下面的东西就可以了:

1、         数据类型
新手只需要掌握:int,float,double,char,字符串就可以了,只要会定义,会使用,就行,不用追求int类型占用几个字节,最大最小值是多少什么的,因为没有必要。

2、         运算符
会+,-,*,/,%,&&,||,=,==!,就行了

3、         三种流程控制

4、         数组的基本用法

5、         字符串的运用和处理
字符串处理是一个大问题,不过新手只需要学会定义字符串数组,会基本的字符串处理函数,例如复制,比较,查找是否含有某个字符就行了。至于更加复杂的处理,等你学会C的语法,具有一定的能力之后再说吧。

6、         自己定义函数,并且会运用函数解决问题
也许新手会觉得,我可以把所有的代码都写在主函数里面,这样多好?不用定义函数,好省事儿。

其实这是不对的,用我的话说,那就是错误,而且是不可以犯的错误。虽然刚开始的时候,那些小问题,比如输出菱形,求公约数,输出佩纳契数列什么的,都可以把代码全部写到主函数里面,但是这并不是真正的C语言程序,如果没有自定义函数,那还是C吗?

新手只要能把这些小问题用自定义函数搞定就行了。不是那种把输入输出都写在一个函数里面,然后在主函数里面调用函数,那是不行的。要学会输入输出有主函数处理,中间的处理过程,交给自定义函数。

C语言是面向过程的语言,如果不会自定义函数,不会设计函数,那就是没有学会C语言。

7、         指针
指针学起来好辛苦啊!指针规则好多啊!指针的错误好难找啊!

是的,指针很难搞,但是学不会指针的人,就没有学过C语言。

在上面那条里,我提到的问题,可以用函数加指针搞定就行了。

8、         库函数

C的库函数那么那么多,我怎么记得住?
我可以明确的告诉你,你是不可能全部记住的。如果你真的去背了,那你别学C了,去参加记忆大赛吧。
我们只需要记住常用几个就行了。比如printf,scanf,pow,等,新手能够运用库函数解决问题就行了。

9、         C的其他内容

比如文件,比如宏,比如多文件编译,等等这些问题,可以等你需要加深学习的时候再搞

九、      几个小程序

1、         Hello World

这个程序,必须要亲自敲一边,并且运行成功,没有理由,那就是必须滴

2、         输入两个数字,求他们的和或者乘积

这是看你有没有学会输入输出函数和几个最近本的运算符

3、         解一元二次方程

这是看你有没有学会选择控制语句和对输入输出处理的提高

4、         输出配伯纳契数列或者输出菱形图案

这是看你有没有掌握循环控制语句

5、         自己写字符串复制函数或者求长度函数等

这是看你对于字符串数组的理解,以及自定义函数处理问题的能力

基本上也就这些吧,一不小心没有收住,如果你看完了,新手有问题可以留言提问,高手感觉哪里有问题,请不要客气的指出来,我是很认真的说。

写给C语言新手的话的更多相关文章

  1. 自己写编程语言-m语言

    一直对技术有很强的兴趣,终于,决定要写自己的语言(m语言).那就先从最简单的开始:解释执行器. 一套完整的语言包含的肯定不止解释执行器了,还要有编译器和IDE,也就还要有语法高亮.智能提示等,不过还没 ...

  2. C语言新手写扫雷攻略1

    工欲善其事,必先利其器,首先要准备好开发环境,既然是C语言,那就不是WinAPI的扫雷,就是纯的C语言开发,但是以前的C都是TC开发的,现在用肯定是过时很久了,但是也是有解决办法的,某些大神开发出Ea ...

  3. C语言新手写扫雷源代码

    今天发布源代码,由于写在一个文件里非常乱,所以分三个文件写 绘图和鼠标函数graph.h /*绘图与鼠标相关函数*/ #include<graphics.h> #include <e ...

  4. C语言新手写扫雷攻略4

    今天写的是游戏过程的函数,基本的算法前面都解释过了,今天是实现基本的功能 补充一下前面需要用到的头文件 #include<conio.h> //_kbhit() #include<s ...

  5. C语言新手写扫雷攻略3

    界面绘制好后,雷数也布置了,接下来就是游戏的运行过程了,今天先不说具体过程,再来看看需要用到的辅助函数 先是简单的画红旗,鼠标右键的功能是画红旗,至此我们都是在使用函数自己绘图,效率是低,但有助于理解 ...

  6. C语言新手写扫雷攻略2

    接下来是游戏的功能设计,要有扫雷的基本功能,左键点击雷区,右键红旗标记,并且可以统计雷数,可以重新开始,以下是游戏的功能初始 void Game(void) { while (1) { if (FLA ...

  7. apple Swift语言新手教程

    Apple Swift编程语言新手教程 文件夹 1   简单介绍 2   Swift入门 3   简单值 4   控制流 5   函数与闭包 6   对象与类 7   枚举与结构 1   ...

  8. 写给Node.js新手的7个小技巧

    一些我更愿意在开始就知道东西 利用 Node.js 开发是一个非常有趣,和令人满足的过程, 他有3万多个模块可以选择使用,并且所有的模块可以非常容易的集成入现有的应用之中. 无论如何,对于一些刚开始使 ...

  9. 如何写好 C语言 main 函数!你准备好编写 C 程序了吗?

    学习如何构造一个 C 文件并编写一个 C main 函数来成功地处理命令行参数.   我知道,现在孩子们用 Python 和 JavaScript 编写他们的疯狂"应用程序".但是 ...

随机推荐

  1. iOS viewController添加导航条以及返回跳转选择

    给单独的viewcontroller或者在Appdelegate的主页面添加导航条,只要在viewcontroller上添加navigationcontroller,在添加此navigationcon ...

  2. HDU 2040:亲和数

    亲和数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  3. 关于PhpDE zend ide破解方式

    1.文件和汉化文件 ZendStudio官方下载地址:http://www.geekso.com/component/zendstudio-downloads/ 百度云地址: 10.0.0.msi文件 ...

  4. C#后台代码编写图片地址Properties.Resources._1;

    if (i == 0)            {                pictureBox1.Image = Properties.Resources._1;                ...

  5. ASP.NET Excel导入到SQL Server数据库

    本文转自:http://www.cnblogs.com/lhking/archive/2009/06/08/1499002.html 提供把Excel里的数据导入到SQL Server 数据库,前提是 ...

  6. UVa 725暴力求解

    A - Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Su Description   Writ ...

  7. 【开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位网友补充完善

    链接地址:http://www.tuicool.com/articles/jyA3MrU 时间 2015-01-05 10:08:18  我是程序猿,我为自己代言 原文  http://blog.cs ...

  8. BZOJ 1537: [POI2005]Aut- The Bus(dp + BIT)

    对y坐标离散化, 然后按x坐标排序, dp. 一个点(x, y), 设到达这个点接到的最多乘客数为t, 那么t可以用来更新y'>=y的所有点.用树状数组维护最大值. -------------- ...

  9. SED修改指定行

    一个文件:cat aa #如果第三行是5的话将改为8,很明显第三行是5所以 结果改变 [root@remote ~]# sed -e '3s/5/8/' aa [root@remote ~]# #如果 ...

  10. WPF Multi-Touch 开发:惯性效果(Inertia)

    原文 WPF Multi-Touch 开发:惯性效果(Inertia) 从上一篇实例可以发现在图片移动过程中如果将手指移开屏幕则图片会立刻停止,根据这种情况WPF 提供另外一种惯性效果(Inertia ...