우아한 프로그래밍

1. 1. 코드

<c++ />
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> typedef struct { float kor; float eng; float mat; float sum; float avg; int rank; } STUDENT; void setSum(STUDENT student[], int i); void setAvg(STUDENT student[], int i); void setRank(STUDENT student[]); int main() { STUDENT student[3]; int students_len = sizeof(student) / sizeof(STUDENT); for (int i = 0; i < 3; i++){ printf("%d번째 학생의 3과목의 성적을 입력해 주세요 EX) 85 54 34 : ", i + 1); scanf("%f %f %f", &student[i].kor, &student[i].eng, &student[i].mat); setSum(student, i); setAvg(student, i); } setRank(student, students_len); for (int i = 0; i < 3; i++){ printf("[%d번째 학생] 국어 : %.2f, 영어 : %.2f, 수학 : %.2f, 총점 : %.2f, 평균 : %.2f, 석차 : %d \n", i + 1, student[i].kor, student[i].eng, student[i].mat, student[i].sum, student[i].avg, student[i].rank); } return 0; } void setSum(STUDENT student[], int i){ student[i].sum = student[i].eng + student[i].kor + student[i].mat; } // 구조체는 값이 복사된다. 절대 주소가 아니다. void setAvg(STUDENT student[], int i) { student[i].avg = student[i].sum / 3.0; } void setRank(STUDENT student[], int length) { for (int i = 0; i < length - 1; i++) { for (int j = 0; j < length; j++){ if (student[i].avg < student[j].avg){ STUDENT temp = student[i]; student[i] = student[j]; student[j] = temp; } } } for (int i = 0; i < length; i++){ student[i].rank = i + 1; } }

 

profile

우아한 프로그래밍

@자바조아!

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!