在 KN 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
列(数字是 3 个字符宽,但为了便于阅读,数字之间需要一个空格)。将您的程序编写为四个函数: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
将显示数字数组的行,每行都在一行 [...]。