C问题和解决方案

时间:2009-11-16 03:08:42

标签: c

我正在寻找一系列可以用来构建我的C技能的C问题(有解决方案)。我已经理解了语言,语法和语义的基础知识。我正在寻找一系列问题,这些问题将帮助我磨练自己的技能,而不是你在入门编程课上看到的一系列简单问题。

10 个答案:

答案 0 :(得分:10)

不要忘记 code-golf

您可能只想回复至少 10赞成的挑战(问题)。

答案 1 :(得分:10)

您可以尝试解决Project Euler上的一些问题。前几个很简单,但很快就会变得非常具有挑战性。我认为尝试使用最短的代码或高度优化的代码来计算结果会很有趣(但是,我通常使用C ++或Python,而不是C)。

Project Euler问题的一个优点是它们不仅仅是以语言为中心的;他们的问题确实让你想到如何为困难问题找到一个优雅的解决方案。

答案 2 :(得分:6)

构建实现复杂data structures的库,如二叉树,字典等。

答案 3 :(得分:6)

答案 4 :(得分:4)

编写一个编译器。它不需要复杂甚至完整:你可以组成一个简单的语言(lisp的一个子集?),然后为它编写一个词法分析器。确保首先放下正式语法。你将触摸内存管理,指针算术和其他整洁的C东西。

通过在C ++中编写一个简单的YAML解析器,我学到了很多关于自动机和编译器设计的知识。

答案 5 :(得分:2)

试试Dennis Ritchie关于C编程语言的书。这本书有很好的问题,阅读它是一个快乐:) 对于更具挑战性的问题,您可以访问Bitwise Programming contest

答案 6 :(得分:1)

Ruby Quiz解决方案有156个问题。但是在Ruby中,而不是C.在James停止成为Ruby测验大师之后,请查看ruby-lang邮件列表。

答案 7 :(得分:0)

Knuth的按位存储库可能有助于高尚的追求:)

http://www-cs-faculty.stanford.edu/~knuth/fasc1a.ps.gz

答案 8 :(得分:0)

练习code Katas,语言并不重要。尝试解决你已经用另一种语言做过的Katas通常可以非常有效地学习一门新语言。

答案 9 :(得分:0)

您可以随时访问Freshmeat,找一些您感兴趣的项目,并查看他们的错误跟踪器。抓住代码并尝试解决一些问题。

这有助于开源,同时也可以帮助您习惯使用调试护目镜跳转到其他人的代码。