카테고리 없음

10109박동진(1,2차원 배열)

20308박동진 2022. 4. 12. 23:38

1차원 배열이 뭘까?

-1차원 배열이란 "같은 자료형으로 연속된 메모리 공간을 할당하여 사용하는 것"

 

1차원 배열 사용법

-선언: 자료형 배열명[첨자];

ex) int n[5];, int arr[6];.....

-호출: 배열명[첨자]={};

ex) n[5] = {};, arr[6] = {1,2,3,4,5,6};.....

                                                                               + 첨자는 0부터 시작함.  

                                                                                  ex) int n[5]; ==> [-][-][-][-][-]

                                                                                              -->n[0] n[1] n[2] n[3] n[4] n[5]

                                                         

예시)

 

int n[5] = {1,2,3,4,5}; ==> [1][2][3][4][5]

int n[5] = {} or {0} ==> [0][0][0][0][0]

char n[] = "ABCD E" ==> [A][B][C][D][ ][E][\0]

-->char n[]의 경우는 마지막임을 표시하기 위해 문자열 맨 마지막에 \0을 넣어줘야 하므로 출력하고자 하는 문자 갯수 +1만큼을 첨자에 넣어주면 된다.

 

 

기본문제

1차원 배열을 사용하는 간단한 문제 예시이다. 

 

문제) 숫자n을 입력받아 1부터 n까지 입력받은 값을 반대로 출력하는 프로그램을 작성해보자

 

정답)#include<stdio.h>

int main(){

   int n, a[1000];  //첨자를 1000으로 설정

   scanf("%d", &n);   //n의 값을 scanf로 받음

   for(int i=0;i<n;i++){   // for문이 n번 만큼 돌아갈 수 있도록 설정

      scanf("%d", &a[i]);    // a[i]에 입력하고 싶은 숫자를 입력

   }

   for(int j=n-1; j>=0; j--){  // for문이 n번 만큼 돌아갈 수 있도록 설정

       printf("%d", a[j]);    //a[j]값을 print

   }

   return 0;

}

 

 

 

 

 

 

 

 

2차원 배열이란 뭘까?

-2차원 배열이란 [](대괄호)를 2번 사용하여 각각의 값을 선언하고 첫번째 대괄호에는 세로 크기, 두 번째 대괄호에는 가로 크기를 지정한다.

+ 1차원 배열과 마찬가지로 첨자는 0부터 시작한다.

 

ex) 자료형 배열이름[세로크기][가로크기];

 

예시) 만약 2차원 배열을 int a[3][4];의 형태로 출력한다면?

 

==> int a[3][4] = {

           {가로 4개},

           {가로 4개},  --> 세로는 3줄

           {가로 4개}

};

 

기본문제

2차원 배열을 사용하는 간단하지 않은 문제이다.

다음과 같은 n*n 배열 구조를 출력해보자.
입력이 3인 경우 다음과 같이 출력한다.
ex) 1 2 3
     4 5 6
     7 8 9

 

 

정답) #include<stdio.h>
        int main(){
          int a[99][99],n, sum=1;   //세로 최대 99줄, 가로 최대 99줄 까지 가능하도록 설정
             scanf("%d", &n);    //scanf로 n의 값 설정
                for(int i=1;i<=n; i++){   //n만큼 for문이 돌 수 있도록 설정
                   for(int j=1; j<=n; j++){  //n만큼 for문이 돌 수 있도록 설정
                     a[i][j]=sum;     //a[i][j]값 sum에 대입
                     sum++;    //sum의 값 +1
                     printf("%d ", a[i][j]);  //sum의 값(a[i][j])출력
                   }
              printf("\n");
                }
              return 0;
        }