//试题下面讨论都说,这格式很坑人。在网站上提交,答案错误。我自己试的,是对的。
小螃蟹提出装在数组里再输出,我当时就想着怎么直接输出来着。
可以直接用字符数组不用那么麻烦得。
char matrix[MAXSIZE][MAXSIZE];

#include <iostream>
#include <cstdio>

using namespace std;

const int MAXSIZE=80;
int matrix[MAXSIZE][MAXSIZE];

int main()
{
    int n;
    char out;
    char in;
    while(scanf("%d %c %c",&n,&in,&out)!=EOF)
    {
        int cen=(n+1)/2;
        matrix[cen-1][cen-1]=0;

        for(int i=1; i<cen; ++i)
        {
            if(i%2==1)
            {
                for(int j=cen-i; j<=cen+i; ++j)
                {
                    matrix[cen-i-1][j-1]=1;
                    matrix[cen+i-1][j-1]=1;
                }
                for(int j=cen-i+1; j<=cen+i-1; ++j)
                {
                    matrix[j-1][cen-i-1]=1;
                    matrix[j-1][cen+i-1]=1;
                }
            }
            else
            {
                for(int j=cen-i; j<=cen+i; ++j)
                {
                    matrix[cen-i-1][j-1]=0;
                    matrix[cen+i-1][j-1]=0;
                }
                for(int j=cen-i+1; j<=cen+i-1; ++j)
                {
                    matrix[j-1][cen-i-1]=0;
                    matrix[j-1][cen+i-1]=0;
                }
            }

        }
        matrix[0][0]=-1;
        matrix[n-1][n-1]=-1;
        matrix[0][n-1]=-1;
        matrix[n-1][0]=-1;
        for(int i=0; i<n; ++i)
            {
                for(int j=0; j<n; ++j)
                {
                    if(matrix[i][j]==0){
                        printf("%c",in);

                    }else if(matrix[i][j]==1){
                        printf("%c",out);
                    }else{
                        printf(" ");
                    }

                }
                printf("\n");
            }
        printf("\n");
    }
}