好啦比如字母I,输出为:
xxxxxxxxx
xxxxxxxxx
xxxxxxxxx
xxx
xxx
xxx
xxx
xxx
xxx
xxxxxxxxx
xxxxxxxxx
xxxxxxxxx
字母L输出为:
xxxx
xxxx
xxxx
xxxx
xxxx
xxxx
xxxx
xxxx
xxxx
xxxxxxxxxxxx
xxxxxxxxxxxx
xxxxxxxxxxxx
看到这里,好多人说这不很简单吗,我一堆for循环,不就出循环输出空格和x嘛。对的,没错我刚开始也这么想。
于是乎,每次要改变点什么就得改代码。
其实可以这样,I其实可以表示成这样
3 9 x
6 5 b 3 x 5 b
3 9 x
代表这个意思:
3行:9个x
6行:5个空格,3个x,5个空格
3行:9个x
然后再写个解析函数,这样的话,每次只需要改上述描述就可以了:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main(){
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
char str[100];
char *p = str;
int line, num;
char c;
while (NULL != gets(str)){
p = str;
sscanf(p, "%d", &line);
//cout << line << ' ';
for (int i = 0; i < line; ++i){
p = str + 2;
int len = strlen(p) / 4;
while (sscanf(p, "%d %c", &num, &c) && len > 0){
//cout << num << ' ' << c << ' ';
for (int j = 0; j < num; ++j){
if (c == 'b'){
cout << " ";
}else{
cout << c;
}
}
p += 4;
len--;
}
cout << endl;
}
//cout << endl;
}
return 0;
}