C语言做的魔方阵

Python014

C语言做的魔方阵,第1张

下面是一个打印奇数魔方阵的程序:

#include<stdio.h>

int main()

{int n=0,i,j,k=1,p,q,a[20][20]={0}

while(!(n%2))

{printf("请输入一个小于20的奇数:")

scanf("%d",&n)

}

i=0

j=n/2

for(p=0p<np++)

{for(q=0q<nq++)

{if(q>0)

{i=(i+n-1)%n

j=(j+1)%n

}

a[i][j]=k++

}

i=(i+1)%n

}

for(i=0i<ni++)

{for(j=0j<nj++)

printf("%4d",a[i][j])

printf("\n")

}

return 0

}

首先魔方阵是一个奇数行列式方阵,它的一行,一列,对角线的和都相等。

建立魔方阵的第一步是确定1的位置,它是第一行的中间列,之后要确定其他位置的值,

问题1:if((i<1)&&(j>n))时,说明你确定的位置已经超出了魔方阵,所以要用i=i+2j=j-1把它拉回的魔方阵内,

问题2:判断第i行地j列的值是否等于0(即是否被填充),如果没填充,就填k,如果填充,再寻找下一个位置,

问题3:因为你的主函数main()前面的返回值为int,所以要提供返回值,那不是return=0,而是return

0就是返回0,也可以返回1,这没关系的,如果不想要也行,那得把main()前面的int

改为void

.

你这输出的是啥……

printf("%3d",&a[i][j])→printf("%3d",a[i][j])

还有这里:

if(x%5==0){

i=i1+1

j=j1

}

如果i=i1+1之后i==n+1了呢?