본문 바로가기

C언어

c언어 4 (배열 / 다차원 배열)

배열 (Array)

: 변수 여러개가 나열되어 있는 형태,

실제로 메모리 내부에 일렬로 나열된 데이터

 

• 배열 활용 방법

- 선언의 경우 : int 변수명 [배열크기] // 변수가 배열 크기 만큼 똑같이 있다.

- 활용의 경우 : 변수명 [배열번호]

 

배열번호(인덱스)는 0부터 시작한다.

ex) 배열크기가 4일 경우 인덱스 : 0, 1, 2, 3 

 

배열을 선언할 때에 변수 안 대괄호 안에 '변수가 갖고 있는 값' 등을 넣을 수 없다. 오로지 숫자만 가능

 

#include <cstdio>

 

ex)

int main() {

    int name[10]; //name이라는 변수가 10개 있다.

    

    name[0]= 1; //배열 변수는 0부터 존재

    name[1]= 2;

    

    printf("%d", name[0]);

    

    return 0;

}

 

ex)

#include <cstdio>

 

int main(){

    int myArray[5] = { 1, 5, 10, 20, 100}; //선언하고 변수에 바로 값을 줄땐 {} 이용

    

    for (int i=0; i < 5; i++){

        printf("myArray[%d] = %d \n",i, myArray[i]);

    }

    return 0;

}

출력값 

myArray[0] = 1 

myArray[1] = 5 

myArray[2] = 10 

myArray[3] = 20 

myArray[4] = 100

 

ex)

#include <cstdio>

 

int main(){

    int a = 2;

    int value[3] = {1, 34, 100};

    

    printf("%d", value[a]);

    

    return 0;

}

출력값

100

 

다차원 배열 활용 방법

선언의 경우 : int 변수명 [배열크기][배열크기]

활용의 경우 : 변수명 [배열번호][배열번호]

 

배열번호(인덱스)는 0부터 시작한다.

 

 ex)

#include <cstdio>

 

int main(){

    int multiArray[3][3];

    

    for (int i = 0; i < 3; i++){

        for (int k = 0; k < 3; k++){

            multiArray[i][k] = i * k;

        }

    }

    

    for (int i = 0; i < 3; i++){

        for (int k = 0; k < 3; k++){

            printf("%d", multiArray[i][k]);

        }

        printf("\n");

    }

    

    return 0;

}

 

//for loop를 이용해서 출력하는 것과 다른 점 :

실제로 값이 메모리에 저장이 되어 있다가 저장된 값을 우리가 불러왔다는 점

 

선언과 동시에 값을 할당하는 경우 : {}을 이중으로 엮어서 준다

ex)

#include <cstdio>

 

int main(){

    int multiArray[3][3] = {

        {1, 2, 3},

        {2, 3, 4},

        {4, 5, 6}

    };

    

    for (int i = 0; i < 3; i++){

        for (int k = 0; k < 3; k++){

            printf("%d", multiArray[i][k]);

        }

        printf("\n");

    }

    return 0;

}

 

 연습 프로그래밍 #1

크기가 20인 배열을 만들고 각각의 배열 원소에

2, 4, 6, 8, ...의 수열을 할당하여

해당 배열을 출력하세요 (반복문을 사용하세요)

 

#include <cstdio>

 

int main(){

    int myArray[20];

    

    for (int i=0; i<20; i++){

        myArray[i]= (i+1) * 2;

    }

    

    for (int i = 0; i < 20; i++){

        printf("myArray[%d] = %d\n", i, myArray[i]);

    }

    return 0;

}

**for 문에 printf 같이 써주지 말고 따로 for문을 만들어서 출력해주기**

 

연습프로그래밍 #2

크기가 20인 배열을 만들고 각각의 배열 원소에

피보나치 수열을 할당하여

해당 배열을 출력하세요 (반복문을 사용하세요)

1, 1, 2, 3, 5, 8, ...

 

#include <cstdio>

 

int main(){

    int fibo[20];

    

    fibo[0] = 1;

    fibo[1] = 1;  // fibo[0]과 fibo[1]을 지정해주는 것이 관건

    

    for (int i = 2; i < 20; i++){

        fibo[i]= fibo[i-1]+ fibo[i-2]; 

    }

    

    for (int i = 0; i < 20; i++){

        printf("fibo[%d] = %d\n", i, fibo[i]);

    }

    return 0;

}

 

연습 프로그래밍 #3

크기가 10x10인 이차원 배열을 만들고 각각의 배열 원소에

원소를 1 ~100까지 할당한 후

해당 배열을 출력하세요 (반복문을 사용하세요)

 

방법1 변수 활용하기

#include <cstdio>

 

int main(){

    int myArray[10][10];

    

    int count = 1;

    for (int i = 0; i < 10; i++){

        for (int k = 0; k < 10; k++){

            myArray[i][k]= count;

            count++;

        }

    }

    

    for (int i = 0; i < 10; i++){

        for (int k = 0; k < 10; k++){

            printf("%d ",myArray[i][k]);

        }

        printf("/n");

    }

    return 0;

}

방법2 자기가 직접 계산하기

#include <cstdio>

 

int main(){

    int myArray[10][10];

    

    for (int i = 0; i < 10; i++){

        for (int k = 0; k < 10; k++){

            myArray[i][k] = (k + 1) + i * 10;

        }

    }

    

    for (int i = 0; i < 10; i++){

        for (int k = 0; k < 10; k++){

            printf("%d ",myArray[i][k]);

        }

        printf("/n");

    }

    return 0;

}

 

연습

크기가 5x5인 이차원 배열 세개를 만들고

첫번째 배열은 1, 2, 3, 4, ... 으로 할당하고

두번째 배열은 2, 4, 6, 8, ... 으로 할당하며

두 배열의 동일한 인덱스에 존재하는 원소들의 합을

세 번째 배열에 저장한 후 

해당 배열을 출력하세요 (반복문을 사용하세요)

 

#include <cstdio>

 

int main(){

    int multiArray1[5][5];

    int multiArray2[5][5];

    int multiArray3[5][5];

    

    int count = 1;

    for (int i = 0; i < 5; i++){

        for (int k = 0; k < 5; k++){

            multiArray1[i][k] = count;

        }

    }

    

    count = 1;

    for (int i = 0; i < 5; i++){

        for (int k = 0; k < 5; k++){

            multiArray2[i][k] = count * 2;

            count++;

            multiArray3[i][k] = multiArray1[i][k] + multiArray2[i][k];

        }

    }

    

    for (int i = 0; i < 5; i++){

        for (int k = 0; k < 5; k++){

            multiArray3[i][k] = multiArray1[i][k] + multiArray2[i][k];

        }

    }

    

    for (int i = 0; i < 5; i++){

        for (int k = 0; k < 5; k++){

            printf ("%d ", multiArray3[i][k]);

        }

        printf("\n");

    }

    return 0;

}