C语言做的魔方阵

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

.

#include<stdio.h>

void main(){

int i,j,n,row,col,a[11][11]

printf("please input n:")

scanf("%d",&n)

col=n/2//

row=0//

for(i=1i<=n*ni++){ //i<=n*n,楼主写错了,如果想保持为<可做相应修改

if(row==-1) // 不明白再联系吧

row=n-1

if(col==n)

col=0 //

a[row][col]=i//

if(i%n==0)

row++

else{

row--

col++

}

}

for(i=0i<ni++){

for(j=0j<nj++)

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

printf("\n")

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7912682.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存