while (1): study();
성적 처리 프로그램 본문
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