1.遇到'@'直接返回
2.每一行最后没有空格
3.从第二行开始每组中间有换行
写得有点繁琐,还是没能充分利用各行列之间的关系。
分成了三部分,第一行,中间,最后一行
中间每行空格数量依次为1,3,5,7....2*i-1,然后输出字符换行
#include<stdio.h>
int main(void)
{
char ch;
int n;
int flag = 0;
while (1) {
scanf("%c", &ch);
if (ch == '@') return 0;
scanf("%d", &n);
getchar();
if (flag) putchar('\n');
if (n == 1) {
printf("%c\n", ch);
continue;
}
for (int i = 0; i < n-1; i++) {
putchar(' ');
}
putchar(ch);
putchar('\n');
for (int i = 1; i < n-1; i++) {
for (int j = n-i; j > 0; j--) {
if (j != 1)
putchar(' ');
else
putchar(ch);
}
for (int k = 2 * i - 1; k > 0; k--) {
putchar(' ');
}
putchar(ch);
putchar('\n');
}
for (int i = 0; i < 2*n-1; i++)
putchar(ch);
putchar('\n');
flag = 1;
}
return 0;
}