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");
}
}
반응형
'C & Docker & LINUX' 카테고리의 다른 글
리눅스 하드디스크 파티션(fdisk) 및 마운트(mount)하기 (0) | 2016.05.17 |
---|---|
C언어 난수 출력 rand()함수 이용예제 (0) | 2016.05.16 |
C언어 - 최대공약수 구하기 (0) | 2016.04.18 |
리눅스 특징, 디렉터리 (0) | 2016.04.15 |
리눅스 - find명령어 (0) | 2016.04.06 |