P1598 垂直柱状图怎么做
时间: 2023-07-01 15:12:43 浏览: 38
题目描述
给你一些数,画出垂直柱状图。即每个数$a_i$画成$a_i$条$*$.每两个数之间用一个空格分隔,每一行最后要换行。在图的下方输出$0$ — $9$。
输入格式
第$1$行:一个数$N$,表示数的个数。
第$2$行至第$N+1$行:每行一个数,表示要被画出的数。
输出格式
按照题目要求输出垂直柱状图和数字$0$ — $9$。
样例输入
3
1
2
3
样例输出
*
*
*
*
**
**
题解
题目本质是要我们将输入的数值转化为柱状图并输出,柱状图的构成就是由 * 组成的。对于每个输入的数值,我们可以先将其转化为对应数量的 *,然后将其存入一个字符串中,在最后输出时再逐行输出这些字符串即可。
而下方的数字 $0$ - $9$ 可以使用两个循环输出,首先先输出一个空格,然后在后面输出数字即可。
C++ 代码
```cpp
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int n;
cin >> n;
string s[10];
memset(s, ' ', sizeof s); // 初始化字符串数组为 ' '
for (int i = 0; i < n; i ++ )
{
int x;
cin >> x;
for (int j = 0; j < x; j ++ )
s[j][i] = '*'; // 将对应列的字符替换为 *
}
for (int i = 9; i >= 0; i -- )
{
cout << s[i] << endl; // 输出柱状图
}
cout << "0123456789" << endl;
return 0;
}
```