在TC2.0能得到正确结果,但是在VC6.0却
得到错解,谁能解释一下原因,谢谢!
不好意思忘了贴代码
用的是连续摆数法
#include<stdio.h>
int main()
{
int a[100][100],n,i,j,k,m;
scanf("%d",&n);
i=0;j=n/2;
a[i][j]=1;
for(;;)
if(a[i][j]==n*n)break;
else
{
k=i;m=j;
i=(i-1+n)%n;j=(j+1)%n;
if(a[i][j]!=0)
{
i=(k+1)%n;
j=m;
a[i][j]=a[k][m]+1;
}
else a[i][j]=a[k][m]+1;
}
for(j=0;j<n;j++)
{
for(i=0;i<n;i++)
printf("%4d",a[j][i]);
printf("\n");
}
return 0;
}
可是我试过可以啊.
#include<stdio.h>
int main()
{
int a[100][100],n,i,j,k,m;
scanf("%d",&n);
for(j=0;j<n;j++)
{
for(i=0;i<n;i++)
a[j][i]=0;
}
i=0;j=n/2;
a[i][j]=1;
for(;;)
if(a[i][j]==n*n)break;
else
{
k=i;m=j;
i=(i-1+n)%n;j=(j+1)%n;
if(a[i][j]!=0)
{
i=(k+1)%n;
j=m;
a[i][j]=a[k][m]+1;
}
else a[i][j]=a[k][m]+1;
}
for(j=0;j<n;j++)
{
for(i=0;i<n;i++)
printf("%4d",a[j][i]);
printf("\n");
}
return 0;
}