用C语言实现魔方阵 阶数要求:奇数 且N<<20
答案:2 信息版本:手机版
解决时间 2019-10-06 18:45
已解决
2019-10-06 04:08
小弟拜求各位大哥大姐,课程设计的题目,我不是计算机专业的
最佳答案
2019-10-06 04:32
我有用c#做的,你要是要的话我可以给你改成c语言的... 要的话联系我
我给简单的改了一下,看看吧
main()
{
int a,b, c, d,i,j;
int s[20][20] ;
printf("shu ru yi ge ji shu:");
scanf("%d",&b);
if(b%2!=0)
{
for ( i = 0; i
for ( j = 0; j
s[i][j] = 0;
d = (b - 1) / 2;
c = 0;
s[0][d] = 1;
for (a = 2; a <= b * b; a++)
{
if (c - 1 >= 0)
{
if (d + 1 > b - 1)
{
c = c - 1;
d = 0;
}
else
{
if (s[c - 1][ d + 1] != 0)
c = c + 1;
else
{
c = c - 1;
d = d + 1;
}
}
}
else
{
if (d + 1 > b - 1)
c = c + 1;
else
{
c = b - 1;
d = d + 1;
}
}
s[c][ d] = a;
}
for (i = 0; i
{
for (j = 0; j
{
printf("%3d",s[i][j]);
}
printf("\n");
}
}
}
全部回答
1楼
2019-10-06 04:40
改动处 l10:j=(n/2)+1; n的中间元素是(n/2)+1,但是在数组当中的位置应该是(n/2) //别忘了位置0存第一个 l18,l20 不等号这里不能取等 l32: 输出格式改了一下,为了好看而已 改后程序 #include"stdio.h" void main() { int a[15][15]={0}; int n,i,j,k,p,q; printf("请输入魔方阵的阶(仅限奇数阶)\n"); scanf("%d",&n); i=0; j=(n/2); a[i][j]=1; for(k=2;k<=n*n;k++) { p=i; q=j; i--; j++; if(i<0) i=n-1; if(j>n-1) j=0; if(a[i][j]!=0) { i=p+1; j=q; } a[i][j]=k; } for(i=0;i
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯