永发信息网

C语言问题求助

答案:2  悬赏:30  手机版
解决时间 2021-07-17 18:06

打印魔方阵。。所谓魔方阵 是指这样的 方阵,它的每一行和每一列和对角线之和均相等。

规律如下

我写了这样的程序。。编译通过,,但运行后结果都不对,,请问错在哪里,。。。

#include<stdio.h>
main()
{int a[20][20],i,j,k,m,n;
printf("输入n:");
scanf("%d",&n);

for(i=1;i<=m;i++)
for(j=1;j<=m;j++)
a[i][j]=0; //赋初值0
j=n/2+1;
a[1][j]=1; //把1放好
i=1;
for(k=2;k<=m;k++)
{ i=i-1;
j=j+1;
if((i<1)&&(j>n)) //这个是第一行,第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");}
}

最佳答案
#include<stdio.h>
main()
{
int a[20][20],i,j,k,m,n,ii,jj;
printf("输入n:");
scanf("%d",&n);


for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=0; //赋初值0

i=1;j=n/2+1;
a[i][j]=1; //把1放好
m=n*n;
for(k=2;k<=m;k++)
{
ii=i;jj=j;
--i;++j;
if(i==0)i=n;
if(j==n+1)j=1;
if(a[i][j] != 0)
a[i=ii+1][j=jj] = k;
else
a[i][j] = k;
}

for(i=1;i<=n;i++) //输出
{ for(j=1;j<=n;j++)
printf("%4d",a[i][j]);

printf("\n");}
}
全部回答

首先这个矩阵好像是奇数的方阵才行吧,那么定义的时候要定义成5X5,7X7什么的。

另外你程序上,给n赋了值scanf("%d",&n);,却用m for(i=1;i<=m;i++)循环,m没得到赋值。

还有点值得注意的是第一行是a[0][i],不是a[1]。第一个元素是a[0][0]。

我个人认为程序可以这样改下

int i,j,itemp,jtemp ;//行列编号,临时坐标

i=n/2;j=0;//从第一行中间开始

a[i][j]=1;

for(m=2;m<=n*n;m++) //以要填入的数做循环

{

if(i==0) itemp=n-1;else itemp=i-1; //用临时坐标itemp,jtemp表示下个坐标

if(j==n-1) jtemp=0;else jtemp=j+1;

if(a[it][jt]==0) {a[itemp][jtemp]=m;i=itemp;j=jtemp;}//如果下个坐标空,直接写入,并按规则修改坐标i,j

else { if(i==n-1) i=0;else i--;a[i][j]=m;} //如果位置已被霸占,退一步海阔天空

}

这个临时坐标意义不大,就是多用点内存少耗点CPU,没意义。只是个人习惯。

以上代码没试过,希望有点帮助。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
恶魔袈裟到底是男是女?
摩尔庄园么么公主七岁和2岁。3岁的照片在哪?
20会计方面的问题~
无聊的时候做什么最好啊!!
可以做动态图片的Microsoft是什么软件阿
我和僵尸有个约会中未来从多少年回来的
那种前四后八好啊
画沙好听吗??
欠钱不还 我有依据
梦幻诛仙的帮派称谓在哪里看
DNF我鬼剑转鬼泣好还是阿修罗好,附理由
歌曲上帝是个女孩中文版的名字叫什么?是谁唱
如果刺猬爱上了玫瑰,那么会有什么结局呢?
买二手货车4108要注意哪些?谢谢!
做蹲起锻炼哪?对长高有帮助吗?
推荐资讯
DNF悬空图要怎样才能开启?
请教开通qq农场的问题~!~!~急~!
电脑显示器能看电视吗
时间那么漫长、漫长到可以让我们忘记一个人而
怎样减轻两个人的感情?
是不是所有24K的千足金都是一样的!
从昆明到成都的机票是多少呢
相爱的人,还在乎手机是否要透明。
qq好友添加权限
吃鱼眼真的可以明目吗?
我相信你会成功的,这句话用英语怎么说?
亚铁离子的符号是什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?