[C/C++] 20강~ 22강 정리
🖥C & C++/인프런 기초학습

[C/C++] 20강~ 22강 정리

728x90
반응형

< 20강. 배열 >



#include <stdio.h>


int main() {

    // 배열 선언

    int a[5];  // 배열의 "이름[크기]" 를 선언

    

    a[0] = 2;  // 5개 짜리 선언한 상태에서 index에 값을 대입 , python처럼 0부터 시작

    a[1] = 3;

    a[2] = 7;

    a[3] = 6;

    a[4] = 8;

    

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

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

    }

    

}



이렇게 선언하는 것은 너무 비효율적!!


#include <stdio.h>


int main(){

    // arr

    int arr[] = {3,1,4,1,5};

    

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

        printf("%d ",arr[i]);

    }

}



중괄호로 선언하는 것이 가능! 



굳이 arr[]안에 숫자를 안적어도 됨 / 어차피 알아서 몇 개인지 알기 때문에 가능



int main(){

    // arr

    int arr[] = {3,1,4,1,5,9,2,6,5,3}; // 4바이트짜리가 10개 -> sizeof 하면 40을 반환함

        

    for (int i = 0; i<= sizeof(arr) / sizeof(int) -1 ; i++){

        printf("%d ",arr[i]);

    }

}


int가 4바이트이기 때문에 sizeof(arr)를 하면 4 X 10개여서 40바이트가 출력이 된다. 이를 sizeof(int)로(=4) 나누면 배열의 크기를


편하게 계산할 수 있다. 파이썬의 len() 느낌인데 좀 더 귀찮은 느낌이다..! 



< 21강. 배열을 활용해 보자! >


1. 입력받은 숫자들을 거꾸로 출력


#include <stdio.h>


int main() {

    int n;

    int arr[1000];

    

    printf("입력할 숫자의 개수 입력 : ");

    scanf("%d",&n);

    

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

        scanf("%d",&arr[i]);

    }

    

    for (int i = n - 1; i>=0;i--){

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

    }

    

}



2. 최대, 최소


최댓값 구하기


#include <stdio.h>


int main() {

    int n;

    int arr[100];

    

    scanf("%d",&n);

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

        scanf("%d",&arr[i]);

    }

    int max = arr[0];

    for (int i= 1; i <n;i++){

        if (max < arr[i]) max = arr[i]; // 갱신해주는 과정임 

    }

    printf("%d",max);

}



최솟값 구하기


int main() {

    int n;

    int arr[100];

    

    scanf("%d",&n);

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

        scanf("%d",&arr[i]);

    }

    int min = arr[0];

    for (int i= 1; i <n;i++){

        if (min > arr[i]) min = arr[i]; // 갱신해주는 과정임

    }

    printf("%d",min);

}


부호 바꾸기만 해주면 됨


3. 짝수의 개수


#include <stdio.h>


int main() {

    int n;

    int arr[100];

    

    scanf("%d",&n);

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

        scanf("%d",&arr[i]);

    }

    

    int cnt = 0;

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

        if (arr[i] % 2 == 0){

            cnt++;

        }

    }

    printf("%d",cnt);

}



< 22강. 2차원 배열 >


#include <stdio.h>


int main(){

    // 3행 4열 배열을 만들겠다.

    int arr[3][4] {

        {1,2,3,4},

        {5,6,7,8},

        {9,10,11,12}

    };   // 그냥 12개를 일렬로 써도 되지만 이렇게 쓰는게 눈에 보기 좋음 

}




#include <stdio.h>


int main(){

    // 3행 4열 배열을 만들겠다.

    int arr[3][4] {

        {1,2,3,4},

        {5,6,7,8},

        {9,10,11,12}

    };   // 그냥 12개를 일렬로 써도 되지만 이렇게 쓰는게 눈에 보기 좋음

    

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

        for (int j = 0 ; i < 4;j++){

            printf("%d",arr[i][j]);

        }

        printf("\n");

    }

}


[행][열]로 선언할 수 있음~



"파스칼의 삼각형"  만들기! 




j == 0 || j == i ->    i행j열 값 1이됨 

i행 j열 = [i-1, j-1] + [i-1, j]


#include <stdio.h>


int main(){

    int arr[10][10];

    

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

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

            if (j == 0 || j == i ) {

                arr[i][j] = 1;

            }

            else {

                arr[i][j] = arr[i-1][j-1] + arr[i-1][j];

            }

            

            printf("%d ", arr[i][j]);

        }

        printf("\n");

    }

}






728x90
반응형