C & Docker & LINUX

C언어 마방진(MAGIC SQUARE)

로픽 2016. 5. 15. 09:00
300x250

C언어 마방진(MAGIC SQUARE)

#include <stdio.h>

#define MAX 20


main()

{

int a[MAX][MAX] = { 0, };  // 0으로 초기화를 해야한다(쓰레기 값 때문에 if문이 실행되지 않는다)

int i, j, n, count, row, col;

printf("몇 줄, 몇 행?(최대 20)");

scanf("%d", &n);


i = 0; j = (n - 1) / 2;  // (0, (n-1)/2)에서 시작을 해야한다

a[i][j] = 1;


for (count = 2; count <= n*n; count++)

{

row = (i - 1 < 0) ? (n - 1) : (i - 1);    //방향 왼쪽 대각선 위

col = (j - 1 < 0) ? (n - 1) : (j - 1);

if (a[row][col])        // 쓰레기값이 들어가면 if문이 실행되지 않는다

i++;

else {

i = row; j = col;

}

a[i][j] = count;

}


for (i = 0; i < n; i++)

{

for (j = 0; j < n; j++)

{

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

}

printf("\n");

}

}



반응형