성적 나열 프로그램

Coding_John :)·2021년 8월 21일
0
post-thumbnail

방학 중에 뭐 좀 해볼까 하다가 전 학기에 과제겸 시험으로 성적 입력하고 성적 순으로 정렬하고
고득점 순으로 나열하는 코드를 작성했던게 기억이 나서 혼자 한번 다시 만들어봤다 :)

문제

다섯 학생들의 학번, 이름, 과목 3개를 입력하고 총점과 평균을 구해서
출력할 때는 학번, 이름, 과목 3개, 총점, 평균 순으로 출력한다.

입력 예시

2001 이나라 24 11 41
2002 최민수 32 52 22
2003 서진아 32 43 52
2004 박흥수 41 14 24
2005 김미나 51 15 11

풀이 코드

#include <stdio.h>

typedef struct list {
	int num;
	char name[10];
	int score[3];
	int sum;
	float avg;
}student; 

int main() {
	student temp;
	student list[5];

	printf("학번과 이름 과목 3개 점수를 입력하세요 =>\n");
	for (int i = 0; i < 5; i++) {
		scanf("%d %s %d %d %d",&list[i].num,&list[i].name,&list[i].score[0], &list[i].score[1], &list[i].score[2]);
		list[i].sum = list[i].score[0] + list[i].score[1] + list[i].score[2];
		list[i].avg = list[i].sum / 3.0; 
	}

	printf("\n\n--------------정렬 수행 전---------------\n");
	printf("번호  이름     과목 점수     합계   평균\n");
	printf("-----------------------------------------\n");

	for (int i = 0; i < 5; i++) {
		printf("%d %s %4d %4d %4d %5d %8.2f\n", list[i].num, list[i].name, list[i].score[0], list[i].score[1], list[i].score[2],list[i].sum,list[i].avg);
	}

	for (int i = 0; i < 4; i++) {
		for (int j = i + 1; j < 5; j++) {
			if (list[i].sum < list[j].sum) {
				temp = list[i];
				list[i] = list[j];
				list[j] = temp; // 버블 정렬
			}
		}
	}

	printf("\n\n--------------정렬 수행 후---------------\n");
	printf("번호  이름     과목 점수     합계   평균\n");
	printf("-----------------------------------------\n");

	for (int i = 0; i < 5; i++) {
		printf("%d %s %4d %4d %4d %5d %8.2f\n", list[i].num, list[i].name, list[i].score[0], list[i].score[1], list[i].score[2], list[i].sum, list[i].avg);
	}

	printf("\n\n-----------------------------------------\n");
	printf("최고득점자 : %s", list[0].name); // 보기 심심해서 넣어봤다 :)
}

출력 예시

혼자서 다시 하다보니 기억이 가물가물했지만 그래도 꾸준히 하던 실력 어디 안 간다 :)
그 때는 이 문제 하나 푸는데 4시간 정도 갈아 넣었는데 이제는 30분도 안되서 하는데 뿌듯하다 :)
더 열심히 해서 다음 학기 성적 장학금 또 받아야지~

0개의 댓글