省流:数字可以显示成 3×5 的点阵(X 表示亮点,. 表示暗点)。现在给出数字位数l(不超过 100)和一串数字,要求输出这些数字在显示屏上的效果。,注意每个数字之间都有一列 . 间隔。
在本地完全正常运行,但是OJ上全部RE,错误信息是
Segmentation fault with invalid memory reference.这是为什么???
如下,主要用标准库的std::string,.substr()和std::cout。
#include <bits/stdc++.h>
using namespace std;
string num[10] = { // 打表
"xxx"
"x.x"
"x.x"
"x.x"
"xxx",
"..x"
"..x"
"..x"
"..x"
"..x",
"xxx"
"..x"
"xxx"
"x.."
"xxx",
"xxx"
"..x"
"xxx"
"..x"
"xxx",
"x.x"
"x.x"
"xxx"
"..x"
"..x",
"xxx"
"x.."
"xxx"
"..x"
"xxx",
"xxx"
"x.."
"xxx"
"x.x"
"xxx",
"xxx"
"..x"
"..x"
"..x"
"..x",
"xxx"
"x.x"
"xxx"
"x.x"
"xxx",
"xxx"
"x.x"
"xxx"
"..x"
"xxx"
};
int main() {
int l;
cin >> l;
cin.get(); // 去除换行
char seq[l + 1];
cin.getline(seq, l + 1);
for (int i = 0; i < l; ++i) {
seq[i] -= '0'; // 令ascii码等于数字
}
for (int i = 0; i < 5; ++i) {
cout << num[seq[0]].substr(i * 3, 3);
for (int j = 1; j < l; ++j) {
cout << '.' << num[seq[j]].substr(i * 3, 3);
}
cout << '\n';
}
}