Menu
Coddy logo textTech

요약: 학생 데이터 구조체

Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 43번째.

challenge icon

챌린지

쉬움

학생 관리 시스템을 통해 구조체 사용의 전체 워크플로우를 보여주는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:

  1. 다음 멤버를 포함하는 Student라는 이름의 struct를 정의합니다:
    • 학생의 ID 번호를 저장할 정수형 id
    • 학생의 성적을 저장할 실수형 grade
  2. main 함수에서 student1이라는 이름의 Student 변수를 생성합니다.
  3. scanf를 사용하여 입력으로부터 학생의 ID와 성적을 읽습니다:
    • ID를 위한 정수를 읽어 student1.id에 저장합니다.
    • 성적을 위한 실수를 읽어 student1.grade에 저장합니다.
  4. 입력을 읽은 후, 다음 유효성 검사 및 계산을 수행합니다:
    • 성적이 100.0보다 크면, 100.0으로 설정합니다.
    • 성적이 0.0보다 작으면, 0.0으로 설정합니다.
    • 현재 성적(유효성 검사 후)에 5.0을 더하여 보너스 성적을 계산합니다.
    • 보너스 성적이 100.0을 초과하면, 보너스 성적을 100.0으로 설정합니다.
  5. 학생 정보를 다음의 정확한 형식으로 출력합니다:
    • Student Information:
    • ID: [id]
    • Original Grade: [grade]
    • Bonus Grade: [bonus_grade]
    • Grade Status: [status]
  6. 성적 상태(Grade status)는 다음과 같이 결정되어야 합니다:
    • 원래 성적이 90.0 이상인 경우: Excellent
    • 원래 성적이 80.0에서 89.9 사이인 경우: Good
    • 원래 성적이 70.0에서 79.9 사이인 경우: Average
    • 원래 성적이 70.0 미만인 경우: Needs Improvement

이 챌린지는 구조체 정의, 변수 생성, 점(dot) 연산자를 사용한 멤버 접근, scanf를 이용한 입력 처리, 그리고 데이터 유효성 검사 및 처리를 위한 조건부 로직에 대한 이해도를 테스트합니다. 실제 시나리오에서 구조체를 다루는 전체 워크플로우를 연습하게 됩니다.

직접 해보기

#include <stdio.h>

// TODO: 여기에 Student 구조체를 정의하세요

int main() {
    // TODO: student1이라는 이름의 Student 변수를 생성하세요
    
    // 입력 읽기
    int id;
    float grade;
    scanf("%d", &id);
    scanf("%f", &grade);
    
    // TODO: 입력된 값을 구조체 멤버에 저장하세요
    
    // TODO: 성적 검증 및 보너스 점수 계산을 구현하세요
    
    // TODO: 성적 상태를 결정하세요
    
    // 결과 출력
    printf("Student Information:\n");
    printf("ID: %d\n", /* TODO: 학생 ID 출력 */);
    printf("Original Grade: %.1f\n", /* TODO: 원래 성적 출력 */);
    printf("Bonus Grade: %.1f\n", /* TODO: 보너스 성적 출력 */);
    printf("Grade Status: %s\n", /* TODO: 성적 상태 출력 */);
    
    return 0;
}

Logic & Flow의 모든 레슨