while (1): study();

성적 처리 프로그램 본문

학습/C, C++

성적 처리 프로그램

전국민실업화 2021. 12. 14. 18:10
728x90
학생 5명의 국어, 영어, 수학 점수를 입력하여 총점, 평균, 학점을 구하고 총점 순으로 정렬하여 출력합니다. 학점은 평균이 90점 이상이면 A, 80점 이상이면 B, 70점 이상이면 C, 그 외는 F로 평가합니다.
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>

#pragma pack(1)

typedef struct
{
	int id;
	char name[20];
	int kor;
	int eng;
	int math;

	int total;
	double average;
	char grade;
} Student;

void get_info(Student**);
void sort_by_total(Student**);
void print_info(Student**);

int main(void)
{
	Student* list[5];

	get_info(list);
	printf("# 정렬 전 데이터...\n");
	print_info(list);

	sort_by_total(list);
	printf("# 정렬 후 데이터...\n");
	print_info(list);

	for (int i = 0; i < 5; i++)
	{
		free(list[i]);
	}

	return 0;
}

void get_info(Student** list)
{
	/*학생 5명의 정보를 입력받는 함수*/
	int i;
	for (i = 0; i < 5; i++)
	{
		list[i] = (Student*)malloc(sizeof(Student));
		if (list[i] == NULL)
		{
			printf("memory allocation failed");
			exit(1);
		}
		printf("학번 : ");
		scanf("%d", &(list[i]->id));
		printf("이름 : ");
		scanf("%s", &(list[i]->name));
		printf("국어, 영어, 수학 점수 : ");
		scanf("%d%d%d", &(list[i]->kor), &(list[i]->eng), &(list[i]->math));

		list[i]->total = (list[i]->kor) + (list[i]->eng) + (list[i]->math);
		list[i]->average = (double)(list[i]-> total) / 3.0;

		if (list[i]->average >= 90) list[i]->grade = 'A';
		else if (list[i]->average >= 80) list[i]->grade = 'B';
		else if (list[i]->average >= 70) list[i]->grade = 'C';
		else list[i]->grade = 'F';
	}
}

void sort_by_total(Student** list)
{
	/*총점으로 학생을 정렬하는 함수*/
	int i, j;

	for (i = 0; i < 4; i++)
	{
		for (j = i + 1; j < 5; j++)
		{
			if (list[i]->total < list[j]->total)
			{
				Student* tmp = list[i];
				list[i] = list[j];
				list[j] = tmp;
			}
		}
	}
}

void print_info(Student** list)
{
	/*학생의 정보를 모두 출력하는 함수*/
	int i;
	for (i = 0; i < 5; i++)
	{
		printf("%-5d%-8s%-5d%-5d%-5d%-5d%-7.1lf%-5c \n",
			list[i]->id, list[i]->name, 
			list[i]->kor, list[i]->eng, list[i]->math, 
			list[i]->total, list[i]->average, list[i]->grade);
	}
}
728x90

'학습 > C, C++' 카테고리의 다른 글

[C언어] 전처리 지시자  (0) 2021.12.16
단어 검출 프로그램  (0) 2021.12.16
소수 계산 프로그램  (0) 2021.12.13
프로필 교환 프로그램  (0) 2021.12.12
[C언어]특별한 포인터  (0) 2021.12.11
Comments