那段C代码

上次提到了一些C语言的题目,留了两个没解决。其中第8个已经被“木天”解释了,我就不赘述了,有兴趣的看那篇文章下面的评论。还有一个,第26个,今天仔细看了看,其实也很简单。

[再链接一次原题:http://www.gowrikumar.com/c/]

具体原理如下:

首先,这个程序的作用是,把从第一个命令行参数传递进来的字符串(必须只含字母)用“点阵”打印出来。它必须至少带一个参数,否则就会崩溃。这大概是这个程序的一个瑕疵吧。

它是怎么做到的呢?很简单,既然是“点阵”,它就肯定要把“字体”存放好,然后读出。“字体”就存放在那个数组里面! 对比输出,和循环中的代码,我们不难发现,这个点阵是6x6的,因为屏幕输出的原因,必须是从上到下先逐行打印,每行必须是从左到右。而每行有多少个点,在哪个位置有点,这些信息都存放在一个数的比特位中!

再来看那个数组,一个数字表示一行,6个数就能存在一个字符的字体。所以这个数组也可以6个一组划分开。需要说明的是,A是从下标6开始的。至于前面的那6个0,主要是起保护作用,防止输入字符超出字母的范围时数组越界。

也是不错的一段代码。Enjoy it!