C语言小白求问如何输出如下有规律矩阵

图片说明

for循环,写一个产生每一行的函数,比如第i行,那么【1,i)是递增的,接着个(n-2xi)个i ,接着是(i,1)从i递减,这样你就得到了一行,最后加一个换行\n,循环结束就可以得到整个矩阵的字符串了。

int num = 0;
cin >> num ;
int x = 0;
int y = 0;
for (int i = 1;  i <= num * 2;  ++ i) {
    for (int j = 1; j <= num * 2; ++j) {
        if ( i > num ) {
            x = num * 2 - i + 1;
        }
        else{
            x = i;
        }
        if ( j > num) {
            y = num * 2 - j + 1;
        }
        else{
            y = j;
        }
        if ( x < y) {
            cout << x << " ";
        }else{
            cout << y << " ";
        }
    }
    cout <<endl;
}

结果:
6
1 1 1 1 1 1 1 1 1 1 1 1
1 2 2 2 2 2 2 2 2 2 2 1
1 2 3 3 3 3 3 3 3 3 2 1
1 2 3 4 4 4 4 4 4 3 2 1
1 2 3 4 5 5 5 5 4 3 2 1
1 2 3 4 5 6 6 5 4 3 2 1
1 2 3 4 5 6 6 5 4 3 2 1
1 2 3 4 5 5 5 5 4 3 2 1
1 2 3 4 4 4 4 4 4 3 2 1
1 2 3 3 3 3 3 3 3 3 2 1
1 2 2 2 2 2 2 2 2 2 2 1
1 1 1 1 1 1 1 1 1 1 1 1

如以下程序:

 int main()
{
    int num = 0;
    int x = 0;
    int y = 0;
    int i,j;
    printf("Please Enter:");
    scanf("%d",&num);
    for (i = 1;  i <= num ;  ++ i) 
    {
        for (j = 1; j <= num ; ++j) 
        {
            if ( i > num ) 
            {
                x = num  - i + 1;
            }
            else
            {
                x = i;
            }
            if ( j > num) 
            {
                y = num  - j + 1;
            }
            else
            {
                y = j;
            }
            if ( x < y)
            {
                printf("%d ",x);
            }
            else
            {
                printf("%d ",y);
            }
        }
        printf("\n");
    }
    return 0;
}