我说明下我自己的情况,我在学校学过一学期C语言一学期C++,学过一学期汇编
语言,对计算机虽然不是很精通但也不是小白。我现在想深入点学习C语言,因为我根据我现在掌握的C语言知识和理解很难做出什么实用性的东西来,顶多也就是能编点小程序处理点数学问题,而且对程序效率的深层优化什么的也是不很明了。
我举例子来说,我个人是比较喜欢这样的学习方法的:就是先确定自己想完成一个什么功能的程序,然后一步步来实现,我以前编过一个贪吃蛇的程序,用了一晚上从准备到出来完整的程序,因为以前我从没编过关于图形界面的程序,所以开始很慢,但是用了一晚上算是实现了。虽然贪吃蛇的大体是实现了,但是程序运行起来并不是那么完美的,比如说在蛇转向的时候总会闪几下,我不知道这是为什么,因为从我的程序看来不应该闪的。我自己考虑可能是由于不了解系统的比较深的原理不能达到很好的显示效果(比如说双缓冲什么的,我听到过这个词但不知道具体什么意思)。还有昨天晚上我给自己定了个目标,就是编一个程序能实现把所有的小于指定数的素数写入一个记事本文件内保存。然后开始上网学习C语言简单的文件操作,最后程序也实现了是个比较简单的程序,虽然运行效率有点低,而且也遇到了一个之前不曾想到的问题。我大体说下。因为程序涉及文件读写操作,我的程序是每测试出一个数是素数就写进文件,然后关闭文件,这样势必运行慢了,因为在程序关闭文件时要把文件缓存的内容写进硬盘,硬盘读写相对慢就耽误程序的运行。于是我就想改进程序,先把素数写进缓存,等写了很多个素数直到缓存满了再写到硬盘。但是实现起来又遇到了问题,我把自己的程序改了下,打开文件不关闭,这样就不会每写一个素数都要写硬盘了,但是我发现只有我要求程序寻找小于5000(具体或许不是这个数,我没测试到底是几)的素数的时候程序运行正常,一旦要求程序运行查找很大的数以下的素数时总是报错,是系统错误。我想综其原因可能就是我对文件操作和系统缓冲的具体细节什么的不清楚。
我想问的是比较深入的学习C语言的步骤,一步步来,我想先确定各项目,比如先实现个什么程序,后实现个什么程序,我好有具体目标一步步来。最好不要只是给我推荐读什么书,因为我放假在家很难静下心来研究一本书的,而且我想如果我真是有心情一本一本书读下来也不用来这里问问题了。我对基本的C的语法什么的都了解了,就是想能深点学习,因为C语言毕竟不是只用来处理几个数学小问题就行了的。连操作系统都能用C写,我不求能到达那种专业的程度,毕竟不是一两天的事。我就是想能一步步更加深的学习C。另外我没专门学习过数据结构和算法,我也不想单独来学,我想在学习C和处理问题的道路上顺便用到后学习。
我想有过C学习经历的人都有经过我这一步的时候吧,有没有过来人讲一下他学习C的经验和根据我的情况给我些建议,我很感激。也不必非得回答我的问题,大家觉得根据我自己说的我的情况给我点具体可行的建议什么的就行了。我领会东西还算不笨,而且对计算机语言方面的学习能力也算比较强。我不是小气只是真的分不多,先谢谢了。还有我留下自己邮箱如果有什么东西或者想进一步交流可以给我发邮件:[email protected]
关于我编的程序的源代码没粘到这里,不过我发到了一个C语言论坛,帖子的地址是http://bbs.cyuyan.com.cn/viewthread.php?tid=2264&highlight=
有我的程序修改前后的源码