요약: 학생 데이터 구조체
Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 43번째.
챌린지
쉬움학생 관리 시스템을 통해 구조체 사용의 전체 워크플로우를 보여주는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:
- 다음 멤버를 포함하는
Student라는 이름의struct를 정의합니다:- 학생의 ID 번호를 저장할 정수형
id - 학생의 성적을 저장할 실수형
grade
- 학생의 ID 번호를 저장할 정수형
- main 함수에서
student1이라는 이름의Student변수를 생성합니다. scanf를 사용하여 입력으로부터 학생의 ID와 성적을 읽습니다:- ID를 위한 정수를 읽어
student1.id에 저장합니다. - 성적을 위한 실수를 읽어
student1.grade에 저장합니다.
- ID를 위한 정수를 읽어
- 입력을 읽은 후, 다음 유효성 검사 및 계산을 수행합니다:
- 성적이 100.0보다 크면, 100.0으로 설정합니다.
- 성적이 0.0보다 작으면, 0.0으로 설정합니다.
- 현재 성적(유효성 검사 후)에 5.0을 더하여 보너스 성적을 계산합니다.
- 보너스 성적이 100.0을 초과하면, 보너스 성적을 100.0으로 설정합니다.
- 학생 정보를 다음의 정확한 형식으로 출력합니다:
Student Information:ID: [id]Original Grade: [grade]Bonus Grade: [bonus_grade]Grade Status: [status]
- 성적 상태(Grade status)는 다음과 같이 결정되어야 합니다:
- 원래 성적이 90.0 이상인 경우:
Excellent - 원래 성적이 80.0에서 89.9 사이인 경우:
Good - 원래 성적이 70.0에서 79.9 사이인 경우:
Average - 원래 성적이 70.0 미만인 경우:
Needs Improvement
- 원래 성적이 90.0 이상인 경우:
이 챌린지는 구조체 정의, 변수 생성, 점(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;
}