C语言-魔方阵

本题只考虑奇数魔方阵

#include
#include
#include
#define N 10
int main()
{ 
 int i,j,k,p,n;
 p=1;
 while(p==1){
 	printf("请输入");
	scanf("%d",&n);
	if((n!=0)&&(n<=15)&&(n%2!=0)){
		
		p=0;
	} 
 } 
 int a[16][16]={0};
 j = n/2+1;
 a[1][j] = 1;
 i=1;
 for(k=2;k<=n*n;k++){
 	i = i-1;
 	j = j+1;
 	
 	if((i<1)&&(j>n)){
	 	i = i+2;
	 	j = j-1;
	 }
	else{
		if(i<1) i=n;
		if(j>n) j=1;
	}
	
    if(a[i][j]==0)
        {a[i][j]=k;
		}
    else
        {i=i+2;
         j=j-1;
         a[i][j]=k;
        }
   
 }
 
 for(i=1;i<=n;i++){
 	for(j=1;j<=n;j++){
	 	printf("%5d",a[i][j]);
	 }
	printf("\n");
 }
return 0;
}

C语言-魔方阵_第1张图片

 

你可能感兴趣的:(C程序设计,c语言,蓝桥杯,算法)