C语言输出一个由字母组成的正方形

输入一个整数n(n>=1)和一个字母c,输出如下示例的图形

6 Y
Y Y Y Y Y Y
Y Z Z Z Z Y
Y Z A A Z Y
Y Z A A Z Y
Y Z Z Z Z Y
Y Y Y Y Y Y
5 a
a a a a a
a b b b a
a b c b a
a b b b a
a a a a a

n是可以大于26的,但应该小于53

#pragma warning(disable:4996) //开头加这句或项目、属性、配置属性、C/C++、预处理器、预处理器定义中添加“_CRT_SECURE_NO_WARNINGS”
#include <stdio.h>
int main() {
    int n;
    char s[2],c;
    char m[52][52];
    int y,x,i;

    while (1) {
        printf("Input n c(1<=n<=52 'a'<=c<='z' or 'A'<=c<='Z'):");
        fflush(stdout);
        rewind(stdin);
        if (2==scanf("%d%1s",&n,s)) {
            c=s[0];
            if (   1<=n && n<=52
            && (('a'<=c && c<='z')
              ||('A'<=c && c<='Z'))) break;
        }
    }

    for (i=0;i<(n+1)/2;i++) {
        y=i    ;for (x=i;x<n-i;x++) m[y][x]=c;
        y=n-i-1;for (x=i;x<n-i;x++) m[y][x]=c;
        x=i    ;for (y=i;y<n-i;y++) m[y][x]=c;
        x=n-i-1;for (y=i;y<n-i;y++) m[y][x]=c;
        c++;
        if (c=='z'+1) c='a';
        if (c=='Z'+1) c='A';
    }

    for (y=0;y<n;y++) {
        for (x=0;x<n;x++) printf("%c",m[y][x]);
        printf("\n");
    }

    return 0;
}



#pragma warning(disable:4996) //开头加这句或项目、属性、配置属性、C/C++、预处理器、预处理器定义中添加“_CRT_SECURE_NO_WARNINGS”
#include <stdio.h>
int main() {
    int n;
    char s[2],c;
    char m[26][26];
    int y,x,i;

    while (1) {
        printf("Input n c(1<=n<=26 'a'<=c<='z' or 'A'<=c<='Z'):");
        fflush(stdout);
        rewind(stdin);
        if (2==scanf("%d%1s",&n,s)) {
            c=s[0];
            if (   1<=n && n<=26
            && (('a'<=c && c<='z')
              ||('A'<=c && c<='Z'))) break;
        }
    }

    for (i=0;i<(n+1)/2;i++) {
        y=i    ;for (x=i;x<n-i;x++) m[y][x]=c;
        y=n-i-1;for (x=i;x<n-i;x++) m[y][x]=c;
        x=i    ;for (y=i;y<n-i;y++) m[y][x]=c;
        x=n-i-1;for (y=i;y<n-i;y++) m[y][x]=c;
        c++;
        if (c=='z'+1) c='a';
        if (c=='Z'+1) c='A';
    }

    for (y=0;y<n;y++) {
        for (x=0;x<n;x++) printf("%c",m[y][x]);
        printf("\n");
    }

    return 0;
}