성적 처리 프로그램을 작성하고자 한다. 학생은 5명이고 과목은 국어, 영어, 수학인 3과목을 대상으로 한다.
학생 별 총점이 필요하고 각 과목당 총점과 평균을 계산할 필요가 있다. 성적의 값은 정수 값으로 입력되어지고 평균은 실수(double)값으로 처리한다.
이 프로그램을 포인터를 이용하여 작성하시오.
첨부 그림 참고
출력화면)
=================================
번호 국어 영어 수학 총점
1 78 87 55 220
2 68 97 80 245
3 99 97 94 290
4 69 88 76 233
5 91 93 76 260
=================================
과목총점 405 462 381 1248
=================================
과목평균 81.00 92.40 76.20 249.60
=================================
#include<stdio.h>
void main()
{
int scores[5][5] = { 0 };
int total[4] = { 0 };
double aves[4] = { 0.0 };
int i, j;
printf("입력화면)\n");
printf("학생성적을 입력하세요. (5명의 학생 자료)\n");
for (i = 0; i < 5; i++)
{
int sum = 0;
printf("%d번(국어, 영어, 수학) : ", i + 1);
scores[i][0] = i + 1;
for (j = 1; j < 4; j++)
{
scanf_s("%d", &scores[i][j]);
sum += scores[i][j];
}
scores[i][4] = sum;
}
printf("\n\n출력화면)\n");
printf("========================================\n");
printf(" 번호 국어 영어 수학 총점\n");
printf("========================================\n");
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
printf(" %d", scores[i][j]);
}
printf("\n");
}
printf("========================================\n");
printf(" 과목총점");
for (int i = 0; i < 4; i++)
{
int subject = 0;
for (int j = 0; j < 5; j++)
{
subject += scores[j][i + 1];
if (j == 4)
{
total[i] = subject;
printf(" %d", total[i]);
}
}
}
printf("\n========================================\n");
printf(" 과목평균");
for (int i = 0; i < 4; i++)
{
aves[i] = double(total[i]) / 5;
printf(" %.2f", aves[i]);
}
printf("\n========================================\n");
}
세로로 가려면 어떻게 해야하지... 이거 빼고 출력하려면 어떻게 해야하지.. 에 대한 고민이 많았다.
저번에 한 번 2차원배열에 대한 예시를 봐두었던 게 생각나서 무사히 스스로의 머리로 작성할 수 있었다.
효율적으로 잘 작성한걸까..?ㅠㅠ 함수화가 가능한지도 잘 모르겠다..