好的,所以我想制作一个代码,它将打印一个像图片中的那样工作的幻方(http://imgur.com/ks0yemC)(这是一个 5x5 矩阵),但它是 11x11。代码对我来说似乎很好,但不幸的是它不起作用,任何人都可以帮助我吗?
int main(int argc, char *argv[]) {
int i, j,k,l;
int a[10][10] = {0} ;
k=5;
l=5;
a[k][l]=1;
for (i=1; i<11; i++) {
if (i%2!=0){
for (j=0; j<i; j++) {
a[k][l+1]=a[k][l] + 1;
l++; }
for (j=0;j<i;j++) {
a[k+1][l]= a[k][l] + 1;
k++; }
}
if (i%2==0){
for (j=0; j<i; j++){
a[k][l-1]= a[k][l] + 1;
l--; }
for (j=0; j<i; j++){
a[k-1][l]= a[k][l] + 1;
k--; }
}
if (i==10){
for (j=0; j<10; j++){
a[k][l+1]=a[k][l] + 1;
l++;
}
}
}
for(i=0; i<11;i++){
for(j=0;j<11;j++){
printf("%d ", a[i][j]); }
printf("\n");
}
return 0;
}
好的,所以我将它修复为 [11][11](愚蠢的错误),但它会像那样打印(http://imgur.com/ai221Pu),这是为什么呢?