当前位置: 代码迷 >> C语言 >> 想了一天的题
  详细解决方案

想了一天的题

热度:64   发布时间:2007-12-14 11:10:43.0
想了一天的题
各位大哥大姐们:
   小弟快学完了C语言了,有一道题想了一天都没有做出,希望你们也来一起想想吧!
   设计一个魔方阵,用户输入一个奇数m后。便可得到此奇数组成的m*m的数字方阵,且由1到m平方间的数字组成,每个数只能用一次,此数字方横着竖着或对角线斜着都相等。如:输入3时会出现  8 1 6
                               3 5 7
                               4 9 2
----------------解决方案--------------------------------------------------------
改错
后面一句忘记打“之和”了,就是横着、竖着、以对角线斜着数字加起来之和要相等
----------------解决方案--------------------------------------------------------
#include<stdio.h>
void main()
{
int a[32][32],i,j,k,p,n;
p=1;
while(p==1)
{
   printf("Enter n(n=1~25)");
   scanf("%d",&n);

  if((n!=0)&&(n<=25)&&(n%2!=0))
    p=0;
}
  for(i=1;i<=n;i++)
     for(j=1;j<=n;j++)
        a[i][j]=0;
  j=n/2+1;
  a[1][j]=1;
for(k=2;k<=n*n;k++)
{
    i=i-1;
    j=j+1;
if((i<1)&&(j>n))
  {
    i=i+2;
    j=j-1;
}
else {if(i<1)
       i=n;
        if(j>n) j=1;
      }   

if(a[i][j]==0)  a[i][j]=k;   
else
{
   i=i+2;
   j=j-1;
   a[i][j]=k;
}
}

for(i=1;i<=n;i++)
{
  for(j=1;j<=n;j++)
     printf("%-4d ",a[i][j]);
  printf("\n");
}

}
----------------解决方案--------------------------------------------------------
谢谢你了
3楼这位大哥真是太牛了,我想了一天了,头都要想炸了,就是想不出什么好的算法,没想到我下课来看,就写好了,我还要好好像你学习才行啊!
----------------解决方案--------------------------------------------------------
额```
LS真会拍马屁
----------------解决方案--------------------------------------------------------
写程序就象写家书 --------》我们数据结构老师
----------------解决方案--------------------------------------------------------
LS的,说得好好玩~~~~~~
----------------解决方案--------------------------------------------------------
  相关解决方案