마방진 c언어로 구현!
마방진 원리
숫자를 놓는다.
c언어로 구현하기!
#include<stdio.h>
#define MAX_SIZE 15//최대 값 설정
void make_msquare(int arr[][MAX_SIZE],int n);//마방진 구현 함수
void display(int arr[][MAX_SIZE],int n);//마방진 출력 함수
main()
{
int arr[MAX_SIZE][MAX_SIZE];
int n;//n*n마방진 입력받는 변수
printf("마방진홀수입력:");
scanf("%d",&n);
make_msquare(arr,n);
display(arr,n);
}
void make_msquare(int arr[][MAX_SIZE],int n)//마방진 구현할 함수
{
int i;//숫자를 저장할 변수
int a=0,b=n/2;//시작위치 설정
for(i=1;i<=n*n;i++)//마방진을 1부터 25까지 채운다.
{
arr[a][b]=i;//n x n 배열에다가 1~25까지 채운다.
if(i%n==0)//5의 배수이면 열을 한칸 내려야 하므로 a++시켜준다
a++;
else
{
if(a==0)//배열의 처음부분 으로 도착했으면 끝부분으로 이동한다.
a=n-1;
else
a--;
if(b==0)//배열의 처음부분 으로 도착했으면 끝부분으로 이동한다.
b=n-1;
else
b--;
}
}
}
void display(int arr[][MAX_SIZE],int n)//마방진 출력하는 함수(출력은 그냥 n*n 2차행열 순서대로 출력해주세면 되요.
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%3d ",arr[i][j]);
}
printf("\n");//n개출력후 줄바꾸기
}
}