以前总是,得一行打印一行,现在可以将全部存储以后,再一次性输出,很好的方法
还有就是行数的奇偶控制,很有效。找出n与,a,b的规律
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; int n; char a[81][81]; void eva(int x, char c) { int i = x; int j = x; if(2*x>n) a[i][j]=c; else { for(;j<=n-x;j++) a[i][j]=c; for(;i<=n-x;i++) a[i][j]=c; for(;j>x;j--) a[i][j]=c; for(;i>x;i--) a[i][j]=c; } } int main(void) { int i, j, t = 0; char c[2][2]; while (scanf("%d%s%s", &n, c, c+1) != EOF) { if (t++) putchar('\n'); if (n == 1) { printf("%c\n", c[0][0]); continue; } memset(a, 0, sizeof(a)); if (!(n/2%2)) swap(c[0][0], c[1][0]); for (i=1; i<=n/2+n%2; eva(i, c[i&1][0]), i++); a[1][1] = ' ';a[1][n] = ' '; a[n][1] = ' ';a[n][n] = ' '; for(i=1;i<=n;i++) { for(j=1;a[i][j];j++) putchar(a[i][j]); putchar('\n'); } } return 0; }