用数组的都弱爆了。
第一行规律: ..#.
或者 ..*.
最后补一个 .
第二行规律: .#.#
或者 .*.*
最后补一个 .
第三行规律: 开始 #
, 然后是 .X.#
或者 .X.*
, 具体用哪个字符需要仔细观察一下。这里有点小坑。WA 了两次才发现有bug。
依次输出就行了。
void printLine1(int n)
{
// n: num of characters
for (int i = 1; i <= n; ++i)
printf("..%c.", i % 3 == 0 ? '*': '#');
printf(".\n");
}
void printLine2(int n)
{
// n: num of characters
char c;
for (int i = 1; i <= n; ++i)
{
c = i % 3 == 0 ? '*' : '#';
printf(".%c.%c", c, c);
}
printf(".\n");
}
void printMainLine(const char s[], int n)
{
char c;
putchar('#');
for (int i = 0; i < n; ++i)
{
c = (i % 3 == 0 || (i % 3 == 1 && i == n - 1)) ? '#' : '*';
printf(".%c.%c", s[i], c);
}
putchar('\n');
}
void printFrame(const char s[])
{
int l = strlen(s);
printLine1(l);
printLine2(l);
printMainLine(s, l);
printLine2(l);
printLine1(l);
// printf("");
}
int main()
{
char s[MAX_N];
scanf("%s", s);
printFrame(s);
}