题目是这样的:

打印一个由1到n^2的自然数组成的魔方阵。要求,每一行、每一列、对角线之和均相等。
例如:三阶魔方阵为
8 1 6
3 5 7
4 9 2

	    2006-08-07 17:41
  
	    2006-08-07 20:54
  你自己去搜索一下,论坛里面有很多都是关于魔方阵的贴子.里面有很多思路!
	    2006-08-07 20:54
  便宜了
#include<stdio.h>
#define N 15
int main()
{
     int i,j,n,t,k,m,data[N][N];
    printf("输入一个小于16的奇数:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            data[i][j]=0;
        }
    }
    i=0;j=n/2;data[i][j]=1;
    t=2;
    while(t<=n*n)
    {
        k=i,m=j;//记录上个数的位置
        i=i-1;
        j=j+1;
        
        if(i<0) i=n-1;
        if(j>n-1) j=0;
        //printf("%-3d%-3d",i,j);
        if(data[i][j]==0)
        {
            data[i][j]=t;
            //printf("**%-3d%-3d%-3d\n",i,j,t);
        }
        else
        {
            i=k+1;
            if(i>n-1) i=0;
            j=m;
            data[i][j]=t;
            //printf("*%-3d%-3d%-3d\n",i,j,t);
        }
        t++;
    }
    printf("%d阶的魔方矩阵如下!\n",n);
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            printf("%-4d",data[i][j]);
        }
        printf("\n");
    }
    return(0);
}
            
    

	    2006-08-07 21:04
  
多谢朋友们的建议!
[此贴子已经被作者于2006-8-8 10:28:52编辑过]
	    2006-08-07 21:05
  #include<stdio.h>
#define N 15
int main()
{
     int i,j,n,t,k,m,data[N][N];
    printf("输入一个小于16的奇数:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            data[i][j]=0;
        }
    }
    i=0;j=n/2;data[i][j]=1;
    t=2;
    while(t<=n*n)
    {
        k=i,m=j;//记录上个数的位置
        i=i-1;
        j=j+1;
        
        if(i<0) i=n-1;
        if(j>n-1) j=0;
        //printf("%-3d%-3d",i,j);
        if(data[i][j]==0)
        {
            data[i][j]=t;
            //printf("**%-3d%-3d%-3d\n",i,j,t);
        }
        else
        {
            i=k+1;
            if(i>n-1) i=0;
            j=m;
            data[i][j]=t;
            //printf("*%-3d%-3d%-3d\n",i,j,t);
        }
        t++;
    }
    printf("%d阶的魔方矩阵如下!\n",n);
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            printf("%-4d",data[i][j]);
        }
        printf("\n");
    }
    return(0);
}

	    2006-08-07 21:25
  
[此贴子已经被作者于2006-8-8 10:26:21编辑过]
	    2006-08-07 21:50
  [此贴子已经被作者于2006-8-8 15:22:38编辑过]
	    2006-08-08 15:17
  本来就只有奇数阵才可以,所以我输入中有要求输入奇数.难道你没有看到?

	    2006-08-08 19:40
  
	    2006-08-08 20:25