Doing/C&C++
숫자마름모
YongArtist
2016. 11. 3. 17:32
<문제>
어떤 수 n을 입력 받아서 대각선 길이가 n인 숫자마름모를 출력하시오.
ex) n=4
<소스코드>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | #include <stdio.h> int main() { int n = 0; // 입력받는 변수 int m = 1; // 배열에 대입할 변수 int tmp = 0; // n 값 저장. 반복출력문에 활용 int x, y; // 배열 위치 지정 int arr[100][100] = { 0 }; scanf("%d", &n); tmp = n; n--; // n-1번째부터 시작하기 위해서 x = 0, y = n; // 배열 초기 위치 지정. while (n > 0) { for (int i = 0; i < n; i++) { // 왼쪽 윗부분 arr[x++][y--] = m++; } for (int i = 0; i < n; i++) { // 왼쪽 아랫부분 arr[x++][y++] = m++; } for (int i = 0; i < n; i++) { // 오른쪽 아랫쪽 arr[x--][y++] = m++; } for (int i = 0; i < n; i++) { // 오른쪽 arr[x--][y--] = m++; } n--; x++; } arr[tmp - 1][tmp - 1] = m; tmp = tmp * 2 - 1; for (int i = 0; i < tmp; i++) { for (int j = 0; j < tmp; j++) { if (arr[i][j] != 0) { printf(" %d",arr[i][j]); } else { printf(" "); // 공백처리 } } printf("\n"); } return 0; } | cs |