关于九阶幻方

给一个9阶幻方
1-81
不能重复
10分钟马上,谢

第1个回答  2009-02-15
以下是用TC写的填幻方的程序代码适用于16阶以内的幻方
#include "stdio.h"
main()
{int n,i,j,k,x,y;
char cn;
static int t[16][16];
loop: printf("输入幻方阶数 n (0<n<16):");
scanf("%d",&n);
if((n%2==0)||(n<0)||(n>15))
{printf("此数不能构成幻方 \n");
goto loop;
}
else
{j=1;
k=(n+1)/2;
t[j][k]=1;
x=j;
y=k;
for(i=2;i<(n*n+1);i++)
{j=j-1;
k=k+1;
if((j<1)&&(k>n))
{j=j+2;
k=k-1;
}
else
{if(k>n) k=1;
else if(j<1) j=n;
}
if(t[j][k]==0) t[j][k]=i;
else
{j=x+1;
k=y;
t[j][k]=i;
}
x=j;
y=k;
}
}
for(j=1;j<(n+1);j++)
for(k=1;k<(n+1);k++)
{printf("%4d",t[j][k]);
if(k==n) printf("\n");
t[j][k]=0;
}
getchar();
printf("继续吗?");
cn=getchar();
if(cn=='y') goto loop;
}

结果如下
47 58 69 80 1 12 23 34 45
57 68 79 9 11 22 33 44 46
67 78 8 10 21 32 43 54 56
77 7 18 20 31 42 53 55 56
6 17 19 30 41 52 63 65 76
16 27 29 40 51 62 64 75 5
26 28 39 50 61 72 74 4 15
36 38 49 60 71 73 3 14 25
37 48 59 70 81 2 13 24 35
第2个回答  2009-02-15
45,34,23,12,01,80,69,58,47
46,44,33,22,11,09,29,68,57
56,54,43,32,21,10,08,78,67
66,55,53,42,31,20,18,07,77
76,65,63,52,41,30,19,17,06
05,75,64,62,51,40,29,27,16
15,04,74,72,61,50,39,28,26
25,14,03,73,71,60,49,38,36
35,24,13,02,81,70,59,48,37

这道题我见过!本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网