这个程序是创建魔法矩阵的,但是n大于3就没办法出结果


#include <stdio.h>
#include <time.h>
#include <stdlib.h>


int main()
{
    time_t t;
    srand(unsigned(time(&t)));
    int n,max,i=0,j,k,temp,example,example1,flag=1,duijiaoxian;
    printf("请输入一个奇数:");
    scanf("%d",&n);
    max=n*n;
    int shuzu[n][n],shuju[max];
    while(1)
    {
        i=0;
        while(1)              //创建一个一维随机数组,其中里面的数不大于n*n且不重复 
      {
        if(i==max)
        break;
        else if(i==0)
        {
            temp=rand()%max+1;
            shuju[i]=temp;
            i=i+1;
        }
        else
        {
            temp=rand()%max+1;
            for(j=0;j<=i-1;j++)
            {
                if(shuju[j]==temp)
                {
                    i=i-1;
                    break;
                }
                shuju[i]=temp;
            }
            i++;
        }
       }
      k=0;
      example=0;
      for(i=0;i<n;i++)       //将一维随机数组里的数放进二维数组里面 
      {
          for(j=0;j<n;j++)
          {
              shuzu[i][j]=shuju[k];
              k=k+1;
        }
      }
      for(i=0;i<=0;i++)      //将二维数组里面的第一行的数相加得到一个数,作为与其他行与列的和的比较对象 
      {
          for(j=0;j<n;j++) 
          {
              example=example+shuzu[i][j];
        }
      }
      for(i=0;i<n;i++)       //每一行的和比较 
      {
          example1=0;
          for(j=0;j<n;j++)
          {
              example1=example1+shuzu[i][j];
        }
        if(example1!=example)
        {
            flag=0;
            break;
        }
      }
      for(i=0;i<n;i++)     //每一列的和比较 
      {
          example1=0;
          for(j=0;j<n;j++)
          {
              example1=example1+shuzu[j][i];
        }
        if(example1!=example)
        {
            flag=0;
            break;
        }
      }
      j=0;
      duijiaoxian=0;
      for(i=0;i<n;i++)      //对角线的和的比较 
      {
          duijiaoxian=duijiaoxian+shuzu[i][j];
          j=j+1;
      }
      if(duijiaoxian!=example)
      {
          flag=0;
      }
      if(flag==1)       //标志位为1则跳出循环 
      {
          break;
      }
      else
      {
          flag=1;
      }
    }
    for(i=0;i<n;i++)     // 输出符合要求的二维数组 
    {
        for(j=0;j<n;j++)
        {
            printf("%d ",shuzu[i][j]);
        }
        printf("\n");
    }
}