【发布时间】:2016-03-18 02:27:57
【问题描述】:
好的,所以我想制作一个代码,该代码将打印一个魔方,其工作方式与图片中的一样 (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),这是为什么呢?
【问题讨论】:
-
你写的超出了
a的范围。int a[10][10]的有效索引为0到9。 -
好吧,所以我把它改成了 [11][11](愚蠢的错误),但它被打印成那样(imgur.com/ai221Pu),这是为什么呢?
标签: c matrix spiral magic-square