如何用C语言的函数输出这个图形

n等于3时
11111
12221
12321
12221
11111

#include <stdio.h>
int mod(int n){
    return n>0?n:-n;
}
int max(int n1,int n2){
    return n1>n2?n1:n2;
}
void print(int n){
    int i,j;
    for(i=0;i<2*n-1;i++){
        for(j=0;j<2*n-1;j++){
            printf("%d",n-max(mod(i+1-n),mod(j+1-n)));
        }
        printf("\n");
    }
}
int main(){
    int n;
    scanf("%d",&n);
    print(n);
}
#include<stdio.h>
int main()
{
    int n,i,j;
    scanf("%d",&n);
    int h=n*2-1;
    int t[h][h];
    for(i=0; i<h; i++)
        for(j=0; j<h; j++)
            if(i+j<h)
                t[i][j]=i<j?i+1:j+1;
            else
                t[i][j]=i>j?h-i:h-j;
    for(i=0; i<h; i++)
    {
        for(j=0; j<h; j++)
        {
            printf("%4d",t[i][j]);
        }
        printf("\n");
    }
    return 1;
}

有点像螺旋矩阵,每一圈加1

int n = 2 * width - 1;
int[][] a = new int[n][n];
int i, j, num = 0, nn = 1;
while (n > 0) {
    a[num][num] = nn;
    if (n > 1) {
        a[num + 1][num] = nn;
        for (i = num, j = num + 1; j < num + n; j++)//上边横着
            a[i][j] = nn;
        for (j = num + n - 1, i = num + 1; i < num + n; i++)//右边竖着
        {
            a[i][j] = nn;
        }
        for (i = num + n - 1, j = n + num - 2; j >= num; j--)//下面横着
        {
            a[i][j] = nn;
        }
        for (j = num, i = num + n - 2; i > num; i--)//左面竖着
        {
            a[i][j] = nn;
        }
    } else {
        break;
    }
    nn++;
    n = n - 2;
    num++;
}