• 6. C - 배열

    2021. 5. 17.

    by. 공상개발

    C 언어로 n개의 데이터 평균을 구하려면 어떻게 해야 될까요?

    지금까지의 접근 방법으로는 변수 n개를 선언하고 모두 더한 뒤 n으로 나누면 됩니다.

    double data1 = 1;
    double data2 = 2;
    // (생략)
    double data(n-1) = n-1;
    dobule data(n) = n;

    double sum = data1 + data2 +... + data(n);
    double averge = sum / n;

     

    즉, 사용되는 변수가 많아질수록 일일이 타이핑하여 선언하기는 쉽지 않습니다.

     

    배열을 이러한 연속적이고 반복되는 값을 손쉽게 처리할 수 있습니다.


    • 자료형 배열 이름[크기];
    • 자료형 배열 이름[크기]={값,.... , 값};
    #include <stdio.h>

    int main() {
      int data [10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // 배열을 생성하고 값 할당
     
      printf("%d\n", numArr [0]); // 1: 배열의 첫 번째(인덱스 0) 요소 출력
      printf("%d\n", numArr [5]); // 6: 배열의 여섯 번째(인덱스 5) 요소 출력
      printf("%d\n", numArr [9]); // 10: 배열의 열 번째(인덱스 9) 요소 출력

    return 0;
    }

     

    int data [10]은 크기가 10인 int형 배열을 선언한다는 뜻입니다.

    배열에 값이 저장된 공간을 요소(element)라고 합니다.

    각 요소에 접근하려면 [ ] 안에 각 요소의 해당 인덱스를 지정하면 됩니다.

    data [0]; // 첫 번째 요소
    data [4]; // 다섯 번째 요소
    data [8]; // 아홉 번째 요소

    배열의 인덱스는 항상 0부터 시작합니다.
    메모리 주소가 0부터 시작하기 때문입니다.

     

     

    배열을 선언할 때 크기 생략

    int data1 [] = {1,2,3,4,5}; // 배열의 크기 생략



    배열의 모든 요소를 0으로 초기화

    int data1 [10] = {0,}; 



    배열에 값 할당하기

    data1 [0] = 1;

    data2 [1] = 2;
    data10 [9] = 10;

     

    배열 요소에 접근할 때 인덱스를 음수로 지정하거나, 크기를 벗어난 인덱스를 지정하면 실행 시 쓰레기 값이 출력됩니다.

     

    즉, 배열의 범위를 벗어난 인덱스에 접근하면 배열이 아닌 다른 메모리 공간에 접근하게 됩니다.

     

    // 반복문을 사용하여 배열의 요소를 모두 출력해보기.
    #include <stdio.h>
    #define N 10;

    int main()
    {
       int data [N] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // 크기가 10인 int형 배열
     
       for (int i = 0; i < N; i++) // 배열의 요소 개수만큼 반복
       {
          printf("% d\n", numArr [i]); // 배열의 인덱스에 반복문의 변수 i를 지정
       }

    return 0;
    }

    ---------------------------------------------------------------------------------------------------------------------------
    출력 값 
    1

    3
    4
    5
    6
    7
    8
    9
    10

     

    배열을 응용해서 10진수를 2진수로 변환한 뒤 배열에 넣어봅시다.


    1. 10진수를 0이 될 때까지 2로 계속 나누어준다.
    2. 나머지를 역순으로 읽는다.

     

    // 10진수 -> 2진수 변환 후 출력

    #include <stdio.h>

    int main()
    {
       int decimal = 13;
       int binary [20] = { 0, };
       int position = 0;

       while (1) {
       
          binary [position] = decimal % 2;   // 2로 나누었을 때 나머지를 배열에 저장
          decimal = decimal / 2;   // 2로 나눈 몫을 저장
          position++;   // 자릿수 변경
         
          if (decimal == 0)   // 몫이 0이 되면 반복을 끝냄
               break;
       }

       // 배열의 요소를 역순으로 출력
       for (int i = position - 1; i >= 0; i--)
       {
          printf("% d", binary [i]);
       }

    printf("\n");

    return 0;
    }

    ---------------------------------------------------------------------------------------------------------------------------
    출력 값 

    1101

     


     

     

    작성된 내용 중 잘못된 정보나 접근이 있을 시, www.instagram.com/hong_.98/을 통해 말씀해 주시기 바랍니다.

    좋은 하루 보내세요.

    'Language > C 튜터링' 카테고리의 다른 글

    8. C - 튜터링 프로젝트 결과물 _Rev.F  (0) 2021.05.26
    7. C - 문자열_Rev.F  (0) 2021.05.26
    5. C - 함수_Rev.1  (0) 2021.05.06
    4. C - 반복문, 조건문 활용 문제  (0) 2021.04.09
    3. C - 조건문 & 반복문  (0) 2021.03.31

    댓글