중첩 반복문을 이용한 2차원 배열 처리 — 행과 열의 순회 패턴, 표 출력과 학생별 총점·평균 | 기초 C언어 8.2.2
기초 C언어Chapter 08 배열 › Section 02 2차원 배열
8.2.2 중첩 반복문을 이용한 2차원 배열 처리
바깥쪽 for 문은 행, 안쪽 for 문은 열을 제어하는 2차원 배열 순회. 표 형태 출력과 학생별 총점·평균 계산의 결과를 확인.
영상 목차 · 원하는 부분부터 보기
01두 축을 모두 제어하는 방법교재 242p
- 2차원 배열은 행과 열이라는 두 개의 축을 가진 구조. 모든 요소를 하나씩 방문하여 값을 읽거나 수정하려면 두 축을 모두 제어할 방법이 필요.
- 8.1.3의 for 문 하나로는 한 줄만 따라갈 수 있음. 7.3.1에서 2차원 배열 처리에 필수라고 예고한 중첩 반복문이 바로 이 작업을 위한 조합.
- 7.3.1의 중첩 for 문에서 본 대로 바깥쪽 루프가 한 번 반복할 때마다 안쪽 루프는 전체를 모두 실행.
022차원 배열 순회 기본 패턴교재 242p
| 구성 | 제어 대상 | 반복 범위 |
|---|---|---|
| 바깥쪽 for 문 | 행(i) | i = 0부터 i < 행의_크기인 동안 |
| 안쪽 for 문 | 열(j) | j = 0부터 j < 열의_크기인 동안 |
- 가장 안쪽에서 array[i][j]로 각 요소에 대한 작업을 수행. i는 행, j는 열.
i와 j의 짝을 지킬 것
array[i][j]에서 첫째 대괄호는 행을 도는 i, 둘째 대괄호는 열을 도는 j. 두 변수를 서로 바꿔 쓰면 엉뚱한 칸을 짚거나 존재하지 않는 칸에 접근할 수 있음.
03CODE 8.6 — 표 형태로 출력교재 242~243p
- CODE 8.6 — 2행 3열 배열 matrix를 10~60의 여섯 값으로 초기화하고, 중첩 for 문으로 모든 요소를 출력하는 예제.
- 안쪽 for 문은 각 원소를 탭(\t)으로 구분하여 출력하고, 안쪽 루프가 끝난 뒤 바깥쪽 루프 안의 printf("\n");이 줄을 바꿈. 탭은 3.2.2에서 본 내용.
- 실행 결과는 10 20 30 / 40 50 60 두 줄. 배열의 2행 3열 모양이 그대로 출력됨. 상세 코드는 교재 CODE 8.6.
04i가 0일 때 j는 0·1·2교재 243p
- i가 0일 때 j가 0, 1, 2로 변하면서 matrix[0][0], matrix[0][1], matrix[0][2]를 출력. 안쪽 루프가 끝나면 줄바꿈 후 i가 1이 되어 다음 행을 반복.
- 줄바꿈 문장의 위치가 핵심. 이 문장이 안쪽 for 문 안에 있었다면 값마다 줄이 바뀌어 표 모양이 사라짐.
05CODE 8.7 — 학생별 총점과 평균교재 243~244p
- CODE 8.7 — 4명의 학생, 3과목 점수를 scores[4][3]에 담고 바깥쪽 for 문은 학생(행), 안쪽 for 문은 과목(열)을 돌며 sum += scores[i][j];로 합계를 구하는 예제.
- 실행 결과는 학생마다 한 줄씩 네 줄. 1번 학생은 총점: 275, 평균: 91.67, 4번 학생은 총점: 249, 평균: 83.00.
- 평균은 (double)sum / 3을 %.2f로 소수점 둘째 자리까지 출력. (double)은 5.3.2에서 본 강제 형 변환이며, 없으면 정수끼리의 나눗셈이 되어 소수점 아래가 잘림. 상세 코드는 교재 CODE 8.7.
sum은 바깥쪽 루프 안에서 초기화
int sum = 0;이 바깥쪽 루프 안에 있어 학생이 바뀔 때마다 sum이 0으로 되돌아감. 바깥쪽 루프 밖에서 한 번만 초기화하면 두 번째 학생의 총점에 첫 번째 학생의 275가 쌓이게 됨.
06정리와 다음 편교재 244p
- 중첩 반복문은 학생별(행) 과목 점수(열)의 합계와 평균을 구하는 데 효과적. 바깥쪽 for 문은 행, 안쪽 for 문은 열을 차례로 방문하는 짜임.
- 숫자를 담는 배열은 여기까지. 다음 편 8.3.1에서는 문자를 담는 char 배열, 곧 문자열을 다룸.
이 절의 핵심 정리
- 2차원 배열은 행과 열이라는 두 축을 가지므로 중첩 반복문으로 모든 요소를 방문한다.
- 순회 기본 패턴에서 바깥쪽 for 문은 행을, 안쪽 for 문은 열을 제어한다.
- CODE 8.6은 한 행의 출력이 끝날 때마다 줄을 바꾸어 2행 3열 배열을 표 형태로 출력한다.
- CODE 8.7은 안쪽 for 문으로 학생별 세 과목 점수를 더하고 총점과 평균을 출력한다.
- sum을 바깥쪽 루프 안에서 초기화해야 학생마다 합계를 새로 계산할 수 있다.
강의 자료8.2.2 중첩 반복문을 이용한 2차원 배열 처리
1 / 12
번호를 누르면 해당 장으로 바로 이동합니다 · 방향키 ← → 로도 넘길 수 있습니다

댓글
댓글 쓰기