大致思路是:按照5*5的方阵赋值字符,然后保证‘*’不会被覆盖就可以
#include <stdio.h>
#include <string.h>
char b[7][100];
int main()
{
char a[20];
scanf("%s", a); //不知道为什么洛谷上不能用gets
int i, j, t, k, l;
for (i = 1; i <= strlen(a); i++)
{
b[3][3 + (i - 1) * 4] = a[i - 1];
t = 3 + (i - 1) * 4;
for (j = t - 2; j <= t + 2; j++)
{
if (i % 3 == 0)
{
if (j == t - 2 || j == t + 2) //对称性
{
b[1][j] = '.';
b[2][j] = '.';
b[3][j] = '*';
b[4][j] = '.';
b[5][j] = '.';
}
if (j == t - 1 || j == t + 1) //对称性
{
b[1][j] = '.';
b[2][j] = '*';
b[3][j] = '.';
b[4][j] = '*';
b[5][j] = '.';
}
if (j == t)
{
b[1][j] = '*';
b[2][j] = '.';
b[4][j] = '.';
b[5][j] = '*';
}
}
else
{
if (j == t - 2 || j == t + 2)
{
b[1][j] = '.';
b[2][j] = '.';
if (b[3][j] != '*') //防止‘*’被‘#’覆盖
b[3][j] = '#';
b[4][j] = '.';
b[5][j] = '.';
}
if (j == t - 1 || j == t + 1)
{
b[1][j] = '.';
b[2][j] = '#';
b[3][j] = '.';
b[4][j] = '#';
b[5][j] = '.';
}
if (j == t)
{
b[1][j] = '#';
b[2][j] = '.';
b[4][j] = '.';
b[5][j] = '#';
}
}
}
}
for (i = 1; i <= 5; i++)
{
for (j = 1; j <= t + 2; j++)
{
printf("%c", b[i][j]);
}
if (i != 5)
printf("\n");
}
}