这下面是我的代码,如果输入3 最后输出的是:
8 1 4200065
3 5 7
4 9 2
请问一下是为什么呢,我感觉我的逻辑是没什么问题,难道是因为不能用动态变量赋值数组嘛?
#include<cstdio>
int main(){
int n;
scanf("%d",&n);
int a,b,s;
int c[n][n]={0};
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
c[i][j]==0;
}
}
a=0;b=(n-1)/2;
c[0][(n-1)/2]=1;
for(i=2;i<=n*n;i++){
if(a==0&&b!=(n-1)){
a=n-1;b=b+1;
c[a][b]=i;
}
else if(b==(n-1)&&a!=0){
b=0;a=a-1;
c[a][b]=i;
}
else if(a==0&&b==(n-1)){
a=a+1;
c[a][b]=i;
}
else if(a!=0&&b!=(n-1)){
if(c[a-1][b+1]==0){
a=a-1;b=b+1;
c[a][b]=i;
}
else{
a=a+1;
c[a][b]=i;
}
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",c[i][j]);
}
printf("\n");
}
return 0;
}