如下为三阶幻方填入的代码。经过compile没有发现错误,但是运行结果不正确,请大佬指点正确方向,谢谢!
#include<bits/stdc++.h>
#include<iostream>
using namespace std;
int main()
{int n=15;
int a[n][n];int t;int k;int r;int c;int tryr;int tryc;
cout<<"input an odd numeber less than 15:";
cin>>k
;for(r=0;r<=k+1;r++);
for(c=0;c<=k+1;c++);
a[r][c]=0;
t=1;r=1;c=k/2+1;
a[r][c]=t;
t=t+1;
while(t<=k*k)
{
tryr=r-1;tryc=c+1;
if((r-1<1&&c+1>k)||(a[r-1][c+1]!=0))
{tryr=r+1;tryc=c;}
if(c+1>k&&r-1>=1)
tryc=1;
if(r-1<1&&c+1<=k)
tryr=k;
/* else if (c+1>k)
tryc=1;
else if (r-1<1)
tryr=k;
*/
a[tryr][tryc]=t;
cout<<"a["<<tryr<<"]"<<"["<<tryc<<"]"<<
a[tryr][tryc]<<endl;
r=tryr;c=tryc;
t=t+1;
};
for(r=1;r<=k;r++)
{for(c=1;c<=k;c++)
cout<<""<<a[r][c];
cout<<endl;
}
return 0;
}
谢谢!想码农们低头!
#include<bits/stdc++.h>
#include<iostream>
using namespace std;
int main()
{int n=15;
int a[n][n];int t;int k;int r;int c;int tryr;int tryc;
cout<<"input an odd numeber less than 15:";
cin>>k
;for(r=0;r<=k+1;r++);
for(c=0;c<=k+1;c++);
a[r][c]=0;
t=1;r=1;c=k/2+1;
a[r][c]=t;
t=t+1;
while(t<=k*k)
{
tryr=r-1;tryc=c+1;
if((r-1<1&&c+1>k)||(a[r-1][c+1]!=0))
{tryr=r+1;tryc=c;}
if(c+1>k&&r-1>=1)
tryc=1;
if(r-1<1&&c+1<=k)
tryr=k;
/* else if (c+1>k)
tryc=1;
else if (r-1<1)
tryr=k;
*/
a[tryr][tryc]=t;
cout<<"a["<<tryr<<"]"<<"["<<tryc<<"]"<<
a[tryr][tryc]<<endl;
r=tryr;c=tryc;
t=t+1;
};
for(r=1;r<=k;r++)
{for(c=1;c<=k;c++)
cout<<""<<a[r][c];
cout<<endl;
}
return 0;
}
谢谢!想码农们低头!