프로그래밍/C

[C언어-응용문제] 동적 메모리 할당을 사용한 배열 평균 구하기

록스타★ 2024. 11. 11. 09:25
반응형

동적 메모리 할당을 사용한 배열 평균 구하기

학생 수를 입력받고, 해당 학생들의 점수를 동적 메모리 할당을 통해 저장한 후, 평균 점수를 구해 출력하는 프로그램을 작성하세요.

사용 개념:

동적 메모리 할당(malloc, free)

반복문(for)

입출력(scanf, printf)

 


풀이 방법

  1. 학생 수 입력받기:
    • scanf를 사용하여 사용자로부터 학생 수를 입력받습니다.
  2. 동적 메모리 할당:
    • malloc을 사용하여 입력된 학생 수만큼의 메모리를 할당하고, 학생 점수를 저장할 배열을 생성합니다.
  3. 학생 점수 입력받기:
    • for 반복문을 사용해 각 학생의 점수를 입력받아 동적 배열에 저장합니다.
  4. 평균 점수 계산:
    • 반복문을 사용해 입력된 점수의 총합을 구한 후, 평균 점수를 계산합니다.
  5. 결과 출력 및 메모리 해제:
    • 평균 점수를 출력하고, free 함수를 사용해 동적 메모리를 해제합니다.

 


코드

#include <stdio.h>
#include <stdlib.h>

int main() {
    int n;  // 학생 수를 저장할 변수
    printf("학생 수를 입력하세요: ");
    scanf("%d", &n);

    // 1. 동적 메모리 할당으로 학생 점수 배열 생성
    int *scores = (int *)malloc(n * sizeof(int));
    if (scores == NULL) {
        printf("메모리 할당에 실패했습니다.\n");
        return 1;  // 메모리 할당 실패 시 프로그램 종료
    }

    // 2. 학생 점수를 입력받습니다.
    int sum = 0;  // 점수 총합을 저장할 변수
    for (int i = 0; i < n; i++) {
        printf("학생 %d의 점수를 입력하세요: ", i + 1);
        scanf("%d", &scores[i]);
        sum += scores[i];  // 입력된 점수를 합산
    }

    // 3. 평균 점수를 계산하고 출력합니다.
    double average = (double)sum / n;
    printf("평균 점수: %.2lf\n", average);

    // 4. 동적 메모리 해제
    free(scores);

    return 0;  // 프로그램이 정상 종료됨을 알립니다.
}

 


코드 설명

 

  1. 변수 선언 및 입력받기:
    • int n;은 학생 수를 저장할 변수입니다.
    • scanf("%d", &n);을 사용해 사용자로부터 학생 수를 입력받습니다.
  2. 동적 메모리 할당:
    • int *scores = (int *)malloc(n * sizeof(int));는 학생 수만큼 int형 배열을 동적으로 생성합니다.
    • malloc은 할당된 메모리의 시작 주소를 반환합니다.
    • 메모리 할당에 실패하면 NULL을 반환하므로, 이를 확인해 메모리 할당 실패 시 프로그램을 종료합니다.
  3. 학생 점수 입력 및 누적합 계산:
    • for 반복문을 통해 각 학생의 점수를 scanf로 입력받아 scores 배열에 저장하고, 입력된 점수를 sum에 더합니다.
  4. 평균 점수 계산 및 출력:
    • double average = (double)sum / n;은 총합을 학생 수로 나누어 평균 점수를 계산합니다.
    • printf("평균 점수: %.2lf\n", average);는 평균 점수를 소수점 두 자리까지 출력합니다.
  5. 동적 메모리 해제:
    • free(scores);는 동적 메모리 할당으로 생성된 메모리를 해제해 메모리 누수를 방지합니다.

 

 

 

반응형