개요
성적처리 할 학생의 수를 사용자로부터 입력받고, 사용자가 입력한 수만큼의 학생에 대해 이름과 국어,영어,수학 성적을 입력받아 총점과 평균을 계산하여 출력하는 프로그램을 작성하세요. |
Code
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_NAME 20
#define SUBJECTS 3
typedef struct Grade
{
char name[MAX_NAME];
int score[SUBJECTS];
int total;
double average;
}gr_t;
typedef enum SubjectName { kor, eng, math }Sub_e;
typedef enum ModeSelect { data_in, data_out }MS_e;
void InputGrade(gr_t* in, int index);
void PrintSubjectName(int name, int mode);
void PrintStudent(gr_t* out);
void PrintSubjectName(int name,int mode)
{
char subName[10] = { 0 };
switch (name)
{
case kor:
strcpy_s(subName, (unsigned)sizeof(subName), "국어"); break;
case eng:
strcpy_s(subName, (unsigned)sizeof(subName), "영어"); break;
case math:
strcpy_s(subName, (unsigned)sizeof(subName), "수학"); break;
default:
strcpy_s(subName, (unsigned)sizeof(subName), "ERROR"); break;
}
printf("%s%s", subName,(mode==data_in)?" : ":"\t|");
}
void InputGrade(gr_t* in, int index)
{
printf("이름 : ");
scanf_s("%s", in[index].name, (unsigned)sizeof(in[index].name));
in[index].total = 0;
for (int i = 0; i < SUBJECTS; i++) {
PrintSubjectName(i,data_in);
scanf_s("%d", &in[index].score[i]);
in[index].total += in[index].score[i];
}
in[index].average = in[index].total / SUBJECTS;
}
void PrintStudent(gr_t* out)
{
printf("%s\t|", out->name);
for (int i = 0; i < SUBJECTS; i++) {
printf("%7d|", out->score[i]);
}
printf("%7d|", out->total);
printf("%7.1lf|\n", out->average);
}
int main(void)
{
int iStudent;
gr_t* sPtr = NULL;
printf("성적처리 할 학생 수를 입력하세요 :");
scanf_s("%d", &iStudent);
sPtr = (gr_t*)malloc((unsigned)sizeof(gr_t) * (iStudent + 1));
for (int i = 0; i < iStudent; i++)
{
printf("************* %2d번째 학생 *************\n", i + 1);
InputGrade(sPtr, i);
}
puts("------------------------------------------------");
printf("이름\t|");
for (int i = 0; i < SUBJECTS; i++)
{
PrintSubjectName(i,data_out);
}
printf("총점\t|평균\t|\n");
puts("------------------------------------------------");
for (int i=0;i<iStudent;i++){
PrintStudent(&sPtr[i]);
}
puts("\n------------------------------------------------");
free(sPtr);
return 0;
}
Output
'C\C++' 카테고리의 다른 글
최대 최소 구하기(bubble sort) (0) | 2022.02.28 |
---|---|
String 관련 예제 (0) | 2022.02.27 |
Structure Input/Output (0) | 2022.02.22 |
소수 구하기 2 (0) | 2022.02.18 |
소수 구하기 (0) | 2022.02.17 |