프로그래밍/C

[C언어-응용문제] 학생 점수 관리 프로그램 (구조체 문제)

록스타★ 2024. 11. 9. 12:58
반응형

학생 점수 관리 프로그램

학생의 이름과 점수를 입력받아 평균 점수를 계산하고, 평균 점수가 60점 이상이면 "합격", 아니면 "불합격"을 출력하는 프로그램을 작성

 

사용 개념:

구조체(struct)

배열

반복문(for)

조건문(if)

입출력(scanf, printf)


 

 

풀이 방법

  1. 구조체 선언:
    • 학생의 이름과 점수를 저장할 struct를 정의
  2. 학생 데이터 입력:
    • for 반복문을 사용하여 학생의 이름과 점수를 입력받고, 구조체 배열에 저장
  3. 평균 점수 계산:
    • 반복문을 통해 입력된 점수의 총합을 계산하고, 평균 점수를 구합니다.
  4. 합격 여부 판단:
    • 평균 점수가 60점 이상이면 "합격", 그렇지 않으면 "불합격"을 출력

 


코드

#include <stdio.h>
#include <string.h>

// 1. 학생 정보를 저장할 구조체를 정의합니다.
struct Student {
    char name[50];  // 학생의 이름을 저장할 변수
    int score;      // 학생의 점수를 저장할 변수
};

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

    struct Student students[num_students];  // 입력된 학생 수만큼 구조체 배열을 생성

    int sum = 0;  // 점수 총합을 저장할 변수, 초기값은 0

    // 2. 학생의 이름과 점수를 입력받습니다.
    for (int i = 0; i < num_students; i++) {
        printf("학생 %d의 이름을 입력하세요: ", i + 1);
        scanf("%s", students[i].name);
        printf("학생 %d의 점수를 입력하세요: ", i + 1);
        scanf("%d", &students[i].score);
        sum += students[i].score;  // 입력된 점수를 합산
    }

    // 3. 평균 점수를 계산합니다.
    double average = (double)sum / num_students;

    // 4. 평균 점수를 출력하고 합격 여부를 판단합니다.
    printf("평균 점수: %.2lf\n", average);
    if (average >= 60) {
        printf("합격\n");
    } else {
        printf("불합격\n");
    }

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

 


코드 설명

  1. 구조체 선언:
    • struct Student는 각 학생의 이름과 점수를 저장하기 위한 구조체
  2. 학생 수 입력받기:
    • scanf("%d", &num_students);를 사용해 사용자로부터 학생 수를 입력
    • struct Student students[num_students];는 동적으로 학생 수에 맞는 구조체 배열을 생성
  3. 학생 데이터 입력:
    • for 반복문을 사용해 각 학생의 이름과 점수를 scanf로 입력
    • 각 점수는 sum 변수에 누적
  4. 평균 점수 계산:
    • double average = (double)sum / num_students;는 총합을 학생 수로 나누어 평균 점수를 계산
    • double 타입을 사용해 소수점 이하까지 표시
  5. 합격 여부 판단:
    • if (average >= 60) 조건문으로 평균 점수가 60점 이상인지 확인하고, 이에 따라 "합격" 또는 "불합격"을 출력
  6. 출력:
    • printf를 사용해 평균 점수와 합격 여부를 화면에 출력
반응형