【发布时间】:2011-10-17 14:24:05
【问题描述】:
在 K.N Kings “C 编程:一种现代方法”,第 10 章练习 7 中,任务是在 ASCII 艺术中将数字转换器从普通数字转换为 7 段数字,如下所示:
_ _ _ _ _ _ _ _
| _| _| |_| |_ |_ | |_| |_| | |
| |_ _| | _| |_| | |_| | |_|
我得到了每个数字的打开和关闭顺序
样本:
int digit_sequence[10][7] = {
// A,B,C,D,E,F,G
/* 0 */ {1,1,1,1,1,1,0}
}
其中 1 = 开启,0 = 关闭
但我很难让process_digit(int digit, int position) 函数工作。
我很难将sequence[10][7] 翻译成digits[4][MAX_DIGITS*4]
好心人能帮帮我吗?
我一直在阅读高尔夫代码七段挑战,但即使我理解了这个理论,仍然很难说服我的大脑使用多个阵列来做我想做的事情。
忽略 ASCII 艺术,问题如下:
编写一个程序,提示用户输入数字,然后用字符显示数字,模拟七段显示的效果。
...
应忽略数字以外的字符。编写程序,使最大位数由名为 MAX_DIGITS 的宏控制,其值为 10。如果数字包含的位数超过此位数,则忽略多余的位数。 提示: 使用两个外部数组。一种是
segments数组[...],它存储表示数字和段之间对应关系的数据。另一个数组digits将是一个字符数组,包含 4 行(因为每个分段数字高 4 个字符)和MAX_DIGITS * 4列(数字是三个字符宽,但为了便于阅读,数字之间需要一个空格)。将您的程序编写为四个函数:main, [...]void clear_digits_array(void); void process_figit(int digit, int position); void print_digits_array(void);
clear_digits_array会将空白字符存储到数字数组的所有元素中。process_digit会将digit的七段表示存储到digits数组中的指定位置(位置范围从0到MAX_DIGITS - 1)。print_digits_array将显示数字数组的行,每行都在一行 [...]。
【问题讨论】:
-
你应该解释清楚一点,
digit_sequence[]和digits[]的目的是什么?您提到的process_digit()函数的意图是什么? -
您犯了一个经典的初学者错误,即假设我们知道您要做什么。我们从未听说过
process_digit函数,也不知道它应该如何工作。 -
第 10 章出现在本书的“第 11 章:指针”和“第 12 章:指针和数组”之前。
-
几年前我们在 comp.lang.c 中使用这些程序进行了大逃杀。 This thread 有很多信息(和非高尔夫项目)。
-
感谢大家的回复,是的,我的问题做得过火了,但在尝试写下问题并同时试图找出问题时,我的想法很远。 (AT)JonathanLeffler 我希望在了解指针和数组之前完成 excersize,因为它应该可以在不采取指针的情况下解决,并且从那个阶段的书籍角度来看,我不会知道任何指针。 (AT)luserdroog 我衷心感谢您对这个问题的最佳回答,因为您向我指出了另一个我无法通过 google 找到的线程。