3. 과제 ¶
[PNG image (16.72 KB)]
Problem?
- 단, 3~9 말고 3~11
- 이거 하고
- 할 수 있으면 배열을 통한 접근과 포인터를 이용한 접근 둘 다 해볼 것
- 그리고 정수 대신에 주소값을 출력하는 것도 해볼 것
- 이를 통해 주소값이 어떻게 배치되어 있는 지를 알 수 있음
- 이를 통해 주소값이 어떻게 배치되어 있는 지를 알 수 있음
- 달팽이를 출력하는 부분은 꼭 함수로 만들 것.
4.1. 임기찬 ¶
#include <stdio.h> void draw(int n, int arr[][11]); //arr 배열에 n x n 달팽이 모양 입력하는 함수 void print(int n, int arr[][11]); //arr 배열 출력하는 함수 int main (){ int n; //n : 입력받는 숫자 int z = 0; //z : 입력받을때 예외 처리 위해 int arr[11][11] = {{0,},}; // 11 x 11 배열 생성 while(z == 0){ printf("n(3~11) : "); z = scanf("%d",&n); if(z == 0 || n > 11 || n < 3 ) { printf("잘못입력하셨습니다. \n"); fflush(stdin); z = 0; } } draw(n,arr); //arr 배열에 n x n 달팽이 모양 입력 print(n,arr); //arr 배열 출력 return 0; } void draw(int n,int arr[][11]){ //arr 배열에 n x n 달팽이 모양 입력하는 함수 int i = 0, j = 0, num = 1, k = 0; //i = 행, j = 열, num = 입력할 숫자 for(;num <= n * n; k++) { for(; j < n - k; j++, num++) { arr[i][j] = num; } for(i++, j--; i < n - k; i++, num++) { arr[i][j] = num; } for(i--, j--; j >= k; j --, num++) { arr[i][j] = num; } for(i--, j++; i > k; i--, num++) { arr[i][j] = num; } i++, j++; } return; } void print(int n,int arr[][11]){ //arr 배열 출력하는 함수 int i, j; //i = 행, j = 열 for(i = 0; i < n; i++){ for (j = 0; j < n; j++){ printf("%3d ",arr[i][j]); } printf("\n"); } return; }