2007
06-10

    本贴计划集中解决新手学习C/C++语言时将遭遇到的各类问题,答案大部分为本论坛已发贴,请认真阅读。
    本贴不具体讨论程序细节,主要分析概念原理和解决方案。
    作者将持续更新,为保持版面整洁,拒绝回帖。如有问题,可另行发贴提出。


C语言帝国 FAQ》有 19 条评论

  1. 碧蓝右耳 说:

    一、入手准备
    FAQ是啥
    我为啥要学编程
    编程是什么
    如果这就是编程,那语言是怎么回事
    听说编程很难,是真的么,那我能学会吗?
    好吧你说服我了,我打算开始,该怎么做
    那么,下一步怎么干
    我碰到问题了,谁能帮我
    我英语\XX不会,咋办
    关于态度、情绪和其他

    二、C语言的问题
    C语言是什么
    C++语言是什么
    为何要选择纯C
    C/C++语言和其他语言有什么关系
    我为什么要学C/C++语言而不是别的

    三、其它一些重要的概念
    为什么要编程————因为机器的特点
    程序到底是怎么回事————是操作而不是结果
    你们老是提到编译器,那是什么
    我的程序和一般的程序不一样,什么原因————控制台和图形界面的差异
    好像不能建立一个单独的文件来编译阿————工程和项目的问题
    难道一切都要从头干起————函数、API、类、控件、开发包与软件复用
    关于图形库的补充说明——–可选择的图形库

    四、教材、习题和示例
    能推荐几本好书么
    光看书似乎不解决问题,难道要做题
    OJ是什么
    哪里有可用的OJ
    哪里有代码示例可看

    五、选择编译器
    有哪些编译器可用
    他们在哪里
    怎么安装他们—-特别解释 MingW版GCC的安装

    六、TC下常见的问题解决
    用TC创建第一个程序
    TC的库路径设置
    TC下的图形编程设置
    我的程序在TC下可以编译,在VC/GCC下为什么出错

    七、其它编译器问题
    用VC创建程序
    用DEV-CPP创建程序
    用MingW创建程序
    用Lcc-win32创建程序

  2. 碧蓝右耳 说:

    FAQ是啥
        FAQ就是Frequently Asked Questions,也就是常见问题解答。这玩意儿通常是一些所谓的高手或者前辈为了节省回答新手的大量简单重复问题所耗费的时间精力而采用的一种偷懒手法。一旦完成,高手只要一努嘴,“看FAQ去”就万事大吉了。实在是居家旅行杀人越货之必备良药,因此在各大论坛已经有大泛滥的趋势。
        本篇FAQ主要为C语言帝国论坛和分群的大量新手编写,重点是如何运行起第一个程序,不涉及语法、数据结构和算法等内容。如果你已经通过计算机二级或水平相似的考试,就不必再往下看了。同时,本FAQ只讨论C语言,其他语言如C++ Java 等均不涉及,如有此类需求,自行解决。

    我为啥要学编程
        这个问题有两层意思。首先是编程为啥要学,很简单,因为这玩意不是生来就会,属于一门手艺,自然要通过学习才能掌握。你怎么也得花上几年来学英语不是。
        第二层涵义才是重点,为啥我要学它。答案因人而异。有人为了上学有人为了考试,有人为了求职挣钱,还有人就是吃饱撑没事做自虐。什么为了开发智力啊证明自己啊寻找成就感啊,那都属于自虐,在下便属于自虐一族。没啥说的,确定你的目的,想继续深入的,往下看,没信心的趁早走人,外面帅哥美女多的是,不要浪费大好时光青春年华在一台破机器上,ok?

    编程是什么
        编程就是编制程序。程序是让计算机发挥功能的命令的集合。程序有两种形式,让计算机真正执行的是电脉冲形式,叫机器码,程序员编制的通常是文本形式,叫源代码。使用一个称为编译器的工具,可以把源代码转变为机器码。而编程就是产生那些源代码的工作。

    如果这就是编程,那语言是怎么回事
        文本形式的源代码,其实有些规定的。就像我们和老美用英语交流。首先你得说英文单词,不能冒法语词汇日文假名出来,其次你得按语法讲话,不能一个个单词往外蹦。程序也是类似,有词汇和语法上的一些规定,这些规定就统称为一门语言。因为这件事是人想出的办法,规定也是人定的,所以各家有各家的高招,不同的规定就形成了不同的语言。

    听说编程很难,是真的么,那我能学会吗?
        你觉得说中文难么?你能流利的说普通话是不是。但是你知道么,汉语是世界上最难学习掌握的语言。稍后我会介绍计算机的特征,你就会明白知道基本上编程这件事的难度等价于指挥IQ<20的壮汉。任何一种计算机语言的难度都不会超过英语,更比不上汉语。那么你认为你能不能学会编程呢。
        请记住学会和学好是两个层次,就像中学生作文和文学出版物之间的差异。达到学会那个程度,只要小学三年级的基础就可以开始了,也就是识字就行。而如果要学好,最好是初高中毕业的水准,也就是略懂英文和解析几何。当然还有更高的层次,在那个档次上,你将被称为大师或者黑客,那是相当于诺贝尔文学奖的水平。至于那个程度怎么达到,不在本FAQ讨论之列。

    好吧你说服我了,我打算开始,该怎么做
        首先去找台机器,从来没听说谁没有电脑就能学习编程的。然后,确保你的健康状况和基本计算机操作水平,最好能有网络连接,物质上就达到要求了。
        没人可以无师自通,天才也不行。所以你要做的第一件事是找一本好的入门教材,最好是经典作品。反复地看教材,要牢记一点,你所提出的大部分问题,教材上都有解释,只是你没有认真看而已。反复的看,直到你觉得你已经可以编写出那本教材了,才可以丢弃他。教材比老师好的原因是,你可以带教材上厕所去卧室,而老师不行。当然,如果你有老师,那就更好。他可以给你解释教材上没有的问题,但记住老师也是人,你不动脑子就去找他,他会厌烦的。不要鄙视你的老师,即使他其它方面不如你,至少在编程这件事上他能做你的老师就是他比你强的硬道理。
        你以为光看语法书不练嘴就能说好英语么,显然不是。编程也一样,熟能生巧在任何地方都是一样的。首先看懂教材上的那些例子,确保看懂之后,按着他的思路把它默写出来,当你尝试过就会知道看懂和默写是两个完全不同的程度。然后就可以做书后面的习题,独立想,不要看答案或提示。等到整本书后面的习题你都能做对的时候,你就算入门了。然后去找等级考试二级三级的题目来做,等到也可以准确无误的时候,恭喜你,C语言(或者其他语言)可以算是通过了。如果你的目的是去考试,现在就出发吧。但如果你想要以编程谋生,sorry,你还欠火候。这其中的差别就相当于大学英语四级作文和畅销英文小说之间的差异。

    那么下一步怎么干
        只需要考试的朋友,不需要看这一段。想谋生或自虐的这边请。
        通过C语言只是编程的第一步而已。你掌握了大量的单词并且熟悉语法还不能让你写出优美的英语小说。你要学习修辞手法、谋篇布局这类文学技巧,也需要掌握历史典故、谚语俗话和文化背景这些文字外的东西,如果要畅销,还需要超凡的主题生动的故事跌宕的情节。编程圈子里有和这些类似的东西。
        算法和数据结构就是程序里的修辞手法谋篇布局。人类编程虽然不过几十年,但运用程序所解决的问题,已经覆盖世界的每个角落各个方面。各种各样的问题,被前辈的大师提炼归纳。有些人们直接找出了解决的方法,有些人们找到了寻找解决方法的途径,还有些人们索性证明了在现阶段是不可能解决的。这些解决方案就被统称为算法。学习算法就是学习前人的智慧,少走弯路。连老牛爵士都是站