蛇形矩阵问题 C语言 现在想再输入想x,y 使得能够输出第x行第y列的数


#include <stdio.h>
#define N 100

void ZigzagMatrix(int a[][N], int n)
{
    int i,j,count,temp;
    //处理左上三角,从a[0][0]开始正序输出
       for(i=0;i<n;i++)
       {
           if(i%2==0)
           {
               temp=i*(i+1)/2+1;
               a[i][0]=temp;
               for(j=1;j<=i;j++)
               {
                   temp++;
                   a[i-j][j]=temp;
               }
           }
           if(i%2==1)
           {
               temp=i*(i+1)/2+1;
               a[0][i]=temp;
               for(j=1;j<=i;j++)
               {
                   temp++;
                   a[j][i-j]=temp;
               }
           }
       }

       //处理右下三角,从a[n][n]开始倒序输出
       for(i=0;i<n-1;i++)
       {
           if(i%2==0)
           {
               temp=n*n-i*(i+1)/2;
               a[n-1-i][n-1]=temp;
               for(j=1;j<=i;j++)
               {
                   temp--;
                   a[n-1-i+j][n-1-j]=temp;
               }
           }
           if(i%2==1)
           {
               temp=n*n-i*(i+1)/2;
               a[n-1][n-1-i]=temp;
               for(j=1;j<=i;j++)
               {
                   temp--;
                   a[n-1-j][n-1-i+j]=temp;
               }
           }
       }
}

void PrintMatrix(int a[][N],int n)
{
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
            printf("%4d",a[i][j]);
        printf("\n");
    }
}

int main()
{
    int n;
    printf("Input n:\n");
    scanf("%d",&n);
    int a[N][N]={0};
    if(n>0&&n<=100)
    {
        ZigzagMatrix(a,n);
        PrintMatrix(a,n);
    }
    else
        printf("Input error!");
}