为了学习(或重新学习)C,有哪些好的项目需要努力?理想情况下,类似于大学课堂上可能获得的作业。可以在线获得实际分配/项目规范的链接。
注意:它们不一定是C类或类似的任务。只是那种能够很好地实现低水平的东西。同时学习其他有趣的东西是奖金!
如果某个地方已经提出这个问题,请指出给我。我试过的搜索术语(课程,作业......!)不利于我的搜索,你可以想象。
答案 0 :(得分:8)
我建议实现最常用的数据结构和算法,如链接列表,树木,排序,搜索等。它们同时具有简洁性和洞察力。如果您了解基础知识,请使用先进的数据结构和算法。
答案 1 :(得分:4)
更大程序的一些想法。你说的类似于课堂作业,所以他们是教育性的但不是很有用: - )
创建一个简单的shell,可用于启动其他程序。实现管道(“|”),后台执行(“&”),顺序执行(“&”),条件执行(“&&”和“||”)。您将了解操作系统环境,流程创建和流程之间的通信。
实施一些RFC定义的协议,如NTP。这将学习网络编程,以及他们阅读和理解RFC的方法。
实现多线程Web服务器或ftp服务器。这将学习网络编程,处理文件和多线程。
在所有情况下,从速度和内存使用的角度来看,请考虑性能。选择最佳的数据结构和算法。这就是运行C的重点。完成后,将您的解决方案与相同的开源变体进行比较。你会学到很多东西。 另外,在valgrind中运行程序以检查内存错误。
答案 2 :(得分:4)
如果您对数学感兴趣,请查看以下问题: http://projecteuler.net
答案 3 :(得分:2)
您知道如何撰写什么类型的应用程序?一个选择可能是抓住像Charles Petzold的编程Windows这样的书,阅读并使用示例代码。
(更新)Miro Samek撰写了一本针对嵌入式开发的书,“C / C ++中的实用UML状态图”。我非常喜欢这本书的早期版本,你可能想看看它。
答案 4 :(得分:2)
这是set of assignments I used last fall。该课程被称为“计算机体系结构”,但实际上是机器级编程课程。我们改变了未来的标题。该课程是所需序列中的第三个,学生们发现它具有挑战性。
答案 5 :(得分:2)
这是我去年春天学过的一些assignments。他们非常有帮助,并且很好地介绍了c。如果你转到该页面顶部的日程安排链接,它将包含所有课堂笔记,其中包括许多代码示例。
分配包括String数据类型,符号表,堆管理器和Unix Shell。
答案 6 :(得分:1)