[c언어] 학생의 시험 평균 구하기 (구조체)
2021. 2. 3. 11:40ㆍComputer Science/C
학생 수를 입력 받고 학생의 이름, 중간고사, 학기말고사를 입력받아
학생의 각각 중간고사 평균과 학기말고사 평균을 계산하고,
그룹 전체의 평균을 구하는 프로그램을 작성한다.
#include <stdio.h>
struct student {
char name[20];
int midterm;
int final;
int average;
};
typedef struct student Student;
struct cClass {
int num;
Student s[40];
};
typedef struct cClass CClass;
void readClass(CClass *cp)
{
int i;
for (i = 0; i < cp->num; i++) {
printf("Enter student name: ");
scanf("%s", cp->s[i].name);
printf("Enter midterm and final score: ");
scanf("%d %d", &cp->s[i].midterm, &cp->s[i].final);
}
}
void printClass(CClass *cp)
{
int i;
for (i = 0; i < cp->num; i++) {
printf("%s\t", cp->s[i].name);
printf("%d\t%d\t%d\n", cp->s[i].midterm, cp->s[i].final, cp->s[i].average);
}
}
void calculateStudentAverage(CClass *cp)
{
int i;
for (i = 0; i < cp->num; i++) {
cp->s[i].average = (cp->s[i].midterm + cp->s[i].final) / 2;
}
}
void calculateAll(CClass *cp, Student *pAll)
{
int i;
int AllMid = 0, AllFinal = 0, AllAvg = 0;
for (i = 0; i < cp->num; i++) {
AllMid += cp->s[i].midterm;
AllFinal += cp->s[i].final;
AllAvg += cp->s[i].average;
}
pAll->midterm = AllMid / cp->num;
pAll->final = AllFinal / cp->num;
pAll->average = AllAvg / cp->num;
}
void printStudent(Student *pAll)
{
printf("%s \t %d \t %d \t %d\n", pAll->name,
pAll->midterm, pAll->final, pAll->average);
}
int main(void)
{
CClass cp;
Student all = {"All", 0, 0, 0};
printf("Enter a numver of student: ");
scanf("%d", &cp.num);
readClass(&cp);
calculateStudentAverage(&cp);
printf("\n이름\t중간\t학기말\t평균\n");
printClass(&cp);
calculateAll(&cp, &all);
printf("------------------------------\n");
printStudent(&all);
}
결과는 아래와 같다.
'Computer Science > C' 카테고리의 다른 글
[c언어] 파일 입출력 연습 (0) | 2021.02.03 |
---|---|
[c언어] 주민등록번호 입력 받아서 평균 수명 구하기 / 문자열 함수 연습 (strtok, strncpy 등) (0) | 2021.02.03 |
[c언어] 문자열 함수 사용 연습 (fgets, isalpha, isdigit, isupper, strcpy, strcat, strlen 등) (0) | 2021.02.03 |
[c언어] 10진수를 2진수로 변환하여 출력하기 (재귀호출) (0) | 2021.02.03 |
[c언어] 2차원 배열과 포인터 (0) | 2020.12.22 |