【 tulaoshi.com - 编程语言 】
                             
                                魔方阵是指元素为自然数1,2,…N2的N×N,每个元素值都不相等,每行、每列以及主、副对角线上各N个元素之和都相等。如3×3魔方阵:
  8 1 6
  3 5 7
  4 9 2
  奇数阶魔方阵的生成方法如下:
  (1) 第一个位置在第一行正中;
  (2) 新位置应当处于最近一个插入位置右上方,但如右上方位置已超出方阵上边界,则新位置取应选列的最下一个位置,如超出右边界则新位置取应选行的最左一个位置;
  (3) 若最近一个插入元素为N的整倍数,则选下面一行同列上的位置为新位置。  
  #include stdio.h
  #define MAXSIZE 15
  int magic[MAXSIZE][MAXSIZE];
  int cur_i=0,cur_j=0;
  main()
  {int count,size=0,i,j;
  while((size%2)==0)
  {
  printf("enter ODD number:");
  scanf("%d",&size);
  }
  cur_j=(size-1)/2;
  for(count=1;count=size*size;count++)
  {
  magic[cur_i][cur_j]=count;
  if((count%size)==0)
  {
  cur_i+=1;
  continue;
  }
  cur_i=cur_i-1;
  cur_j=cur_j+1;
  if(cur_i0)
  cur_i+=size;
  else if(cur_j==size)
  cur_j-=size;
  }
  for(i=0;isize;i++)
  {
  printf("");
  for(j=0;jsize;j++)
  printf("%5d",magic[i][j]);
  }
  }  
  此程序参见《中国计算机软件专业技术资格和水平考试统编辅导教材》(程序员级、高级程序员级)《程序设计第二版》张福炎主编,清华大学出版社,1996年5月第二版,P96