随笔分类 -  TCPL

摘要:这两道习题综合起来是利用散列表写个适用C语言的简单#define处理器,只能处理#define/#undef不带参数的情形,并且#define后面必须带值。不带值其实也就是加多一个处理,分辨#define语句是否已经结束。这里输入代码我用的是TCPL的getch, ungetch,其实本应该直接读入一个C文件,可是这里我偷懒了。读入文件的话处理代码差别也不大。我把代码分为几个模块:hash.c:散... 阅读全文
posted @ 2010-11-23 01:13 Linjian 阅读(430) 评论(0) 推荐(0)
摘要:TCPL练习3-3的题目是这样的:函数expand(s1, s2),将字符串中s1中类似a-z的速记扩展为:abcd...xyz,并能处理大小写,并可以处理a-b-c-d, a-z0-9, -a-z这样的情况,前导的-字符照样排印。  我记得这道题在豆瓣上看朋友用PY写得很简洁,用C写的代码看起来比较累赘,可能也是我想得比较复杂。代码:代码执行结果如下:代码PS:刚才看了TCAB,里面的答案写得很... 阅读全文
posted @ 2010-11-09 00:31 Linjian 阅读(321) 评论(0) 推荐(0)
摘要:坚持每天写一两道小练习:-)  TCPL练习1.13: 编写一个程序,打印输入中单词长度的水平和垂直直方图。很简单,就是垂直的时候,我用了二维数组,真是浪费空间啊。当然有局限性,只能规定单词长度在什么范围内。TCAB里面通过一条数学运算,没借助二维数组来实现,我没有验证,也没有看懂那运算是怎么得出结果的。代码 阅读全文
posted @ 2010-11-01 23:32 Linjian 阅读(332) 评论(0) 推荐(0)
摘要:打算这段时间重新拜读TCPL这本经典著作,并把后面的习题都做一遍。结果,发现我的决定是多么的正确,多么有必要。  原因在于下午一道练习题,很简单:编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格来表示。  很简单,本来前几章的练习都不打算写,因为之前国庆回家正好带回了一本《The C Answer Book》,就打算写写然后看看答案。不假思索我就写了一个程序:代码这当然能正确运行。... 阅读全文
posted @ 2010-10-31 17:59 Linjian 阅读(376) 评论(0) 推荐(0)