Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어로 배열을 동적으로 생성하고 요소의 합 출력하기

문제 개요

숫자 n이 주어졌을 때, 크기가 n인 배열을 동적으로 생성하고 n개의 정수를 하나씩 입력받은 뒤 그 합을 구하는 프로그램을 작성해 보겠습니다. 배열을 동적으로 생성하려면 stdlib.h 헤더 파일에 포함된 malloc() 또는 calloc() 함수를 사용할 수 있습니다. n의 값 역시 표준 입력(stdin)을 통해 제공됩니다.

예를 들어, 입력이 n = 6이고 배열 요소가 9, 8, 7, 2, 4, 3이라면 출력은 33이 됩니다. 9 + 8 + 7 + 2 + 4 + 3 = 33이기 때문입니다.

해결 접근 방법

이 문제는 다음 단계를 통해 해결할 수 있습니다.

  • sum을 0으로 초기화합니다.

  • 정수를 하나 입력받아 n에 저장합니다.

  • 크기가 n인 배열(arr)을 동적으로 생성합니다.

  • i를 0부터 시작해 i < n 조건을 만족하는 동안 반복하며(i는 1씩 증가):

    • 정수를 입력받아 arr[i]에 저장합니다.

  • i를 0부터 시작해 i < n 조건을 만족하는 동안 반복하며(i는 1씩 증가):

    • sum에 arr[i] 값을 누적합니다.

  • 최종적으로 sum을 반환(출력)합니다.

예제 코드

아래 구현 예시를 통해 더 자세히 이해해 보겠습니다.

#include <stdio.h>
#include <stdlib.h>
int main(){
    int *arr;
    int n;
    int sum = 0;
    scanf("%d", &n);
    arr = (int*) malloc(n*sizeof(int));
    for(int i = 0; i < n; i++){
        scanf("%d", (arr+i));
    }
    for(int i = 0; i < n; i++){
        sum += arr[i];
    }
    printf("%d", sum);
}

입력

6 9 8 7 2 4 3

출력

33

코드 설명

위 코드에서 malloc(n*sizeof(int))은 정수 n개를 저장할 수 있는 메모리 공간을 힙(heap) 영역에 할당합니다. 이렇게 하면 컴파일 시점에 배열 크기를 미리 정할 필요 없이, 실행 중 입력받은 값에 따라 유연하게 배열 크기를 결정할 수 있습니다. 첫 번째 반복문에서 각 배열 요소에 값을 저장하고, 두 번째 반복문에서 모든 요소를 순회하며 합계를 계산한 후 결과를 출력합니다. 참고로 프로그램 종료 전에 free(arr)를 호출해 할당된 메모리를 해제하는 것이 좋은 습관입니다.