题目
分析
这道题的核心有两个。一个是如何表示每个数字,一个是如何输出。
每个数字的表示
比较自然的出发点是用字符串表示每一行(共5行),然后用数组(大小为10)表示10个数字。
string digits[10][5] = {
{"XXX", "X.X", "X.X", "X.X", "XXX"}, // 0
{"..X", "..X", "..X", "..X", "..X"}, // 1
// ... ...
};
于是,某个数字的某一行是哪三个字符构成,就可以用digits[i][row]来快速获取。
如何输出
先说如何输入那个n位的数字。我们可以用string num,随后再从高位到低位一个个读出来;我们也可以借用char num[100],然后循环读出每个数位。我们程序中用的是第二种:
char num[100];
cin >> num;
在输出的时候,要注意外部循环控制什么(第几行)、内部循环控制什么(第几个数字)。还要注意是否是最后一个数字,因为除了最后一个数字外,其他两个数字之间都要用.分割。
当然,更不能忘记,我们存储在num里的是字符0-9,换成数组索引的时候要用常规的int digit = num[i] - '0'转换。
这样,我们就完成了逐行扫描输出的效果。
答案

思考
(略)
