洛谷:P5730:显示屏


洛谷:P5730:显示屏

题目

P5730:显示屏

分析

这道题的核心有两个。一个是如何表示每个数字,一个是如何输出。

每个数字的表示

比较自然的出发点是用字符串表示每一行(共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'转换。

这样,我们就完成了逐行扫描输出的效果。

答案

Solution

思考

(略)

Previous Next