[3차원배열]
배열의 각 요소가 2차원 배열인 배열
3차원 배열의 생성방법
자료형 배열명[2차원 배열의 개수][1차원 배열의 개수][1차원 배열의 요소의 개수]
면: 2차원 배열의 개수
행: 각 1차원 배열의 개수
열: 각 변수의 개수
3차원 배열의 초기화
자료형 배열명[면][행][열] =
{
{1면
{값1,값2,값3}
{값4,값5,값6}
},
{2면
{값7,값8,값9}
{값10,값11,값12}
},
{3면
{값13,값14,값15}
{값16,값17,값19}
}
};
——————————————————-
<실습> 반학생점수.c
1반 국 영 수
1번: 100 80 50
2번: 20 30 40
2반 국 영 수
1번: 70 70 70
2번: 30 40 50
3반 국 영 수
1번: 97 90 80
2번: 70 90 80
4반 국 영 수
1번: 60 89 100
2번: 98 40 50
1) 3차원 배열을 사용해서 학생들의 점수를 저장
2) [1~4반]
국어점수평균:
영어점수평균:
수학점수평균:
3) 각 과목의 최대점수를 맞은 학생의 반 번호를 출력
국어 1등: x반 x번 학생
영어 1등: x반 x번 학생
수학 1등: x반 x번 학생
#include <stdio.h>
int main() {
int ar[4][2][3] = {
{
{100,80,50},
{20,30,40},
}, //0면
{
{70,70,70},
{30,40,50},
}, //1면
{
{97,90,80},
{70,90,80},
}, //2면
{
{60,89,100},
{98,40,50},
}, //3면
};
/* for (int k = 0; k < 4; k++) {
for (int j = 0; j < 2; j++) {
for (int i = 0; i < 3; i++) {
printf("%d반%d번의 점수:%d\t",k+1,j+1, ar[k][j][i]);
}
printf("\n");
}
}*/
double koravg[4];
double engavg[4];
double mathavg[4];
int sum = 0;
for (int j=0; j < 4; j++) {
sum = 0;
for (int i = 0; i < 2; i++) {
sum += ar[j][i][0];
}
koravg[j] = sum / (double)2;
}
printf("----국어점수 평균----\n");
for (int i = 0; i < 4; i++) {
printf("%d반 학생의 국어평균:%.1lf\n", i + 1, koravg[i]);
}
for (int j = 0; j < 4; j++) {
sum = 0;
for (int i = 0; i < 2; i++) {
sum += ar[j][i][1];
}
engavg[j] = sum / (double)2;
}
printf("----영어점수 평균----\n");
for (int i = 0; i < 4; i++) {
printf("%d반 학생의 국어평균:%.1lf\n", i + 1, engavg[i]);
}
for (int j = 0; j < 4; j++) {
sum = 0;
for (int i = 0; i < 2; i++) {
sum += ar[j][i][1];
}
mathavg[j] = sum / (double)2;
}
printf("----수학점수 평균----\n");
for (int i = 0; i < 4; i++) {
printf("%d반 학생의 국어평균:%.1lf\n", i + 1, mathavg[i]);
}
int korMax = 0, engMax = 0, mathMax = 0;
int korstu[2], engstu[2], mathstu[2];
for (int k = 0; k < 4; k++) {
for (int i = 0; i < 2; i++) {
if (korMax < ar[k][i][0]) {
korMax = ar[k][i][0];
korstu[0] = k;
korstu[1] = i;
}
}
}
for (int k = 0; k < 4; k++) {
for (int i = 0; i < 2; i++) {
if (engMax < ar[k][i][1]) {
engMax = ar[k][i][1];
engstu[0] = k;
engstu[1] = i;
}
}
}
for (int k = 0; k < 4; k++) {
for (int i = 0; i < 2; i++) {
if (mathMax < ar[k][i][2]) {
mathMax = ar[k][i][2];
mathstu[0] = k;
mathstu[1] = i;
}
}
}
printf("국어 1등: %d 반%d 번 학생\n", korstu[0]+1, korstu[1]+1);
printf("영어 1등: %d 반%d 번 학생\n", engstu[0] + 1, engstu[1] + 1);
printf("수학 1등: %d 반%d 번 학생\n", mathstu[0] + 1, mathstu[1] + 1);
return 0;
}