중첩 반복문을 이용한 2차원 배열 처리 — 행과 열의 순회 패턴, 표 출력과 학생별 총점·평균 | 기초 C언어 8.2.2

기초 C언어Chapter 08 배열 › Section 02 2차원 배열

8.2.2 중첩 반복문을 이용한 2차원 배열 처리

바깥쪽 for 문은 행, 안쪽 for 문은 열을 제어하는 2차원 배열 순회. 표 형태 출력과 학생별 총점·평균 계산의 결과를 확인.

교재 수록 위치
교재
『기초 C언어』 · 이은상 · 부크크 · 364쪽
단원
Chapter 08 배열 › Section 02 2차원 배열 › 중첩 반복문을 이용한 2차원 배열 처리
쪽수
242p ~ 244p3쪽
세부 내용
2차원 배열과 반복문 · 2차원 배열 순회 기본 패턴 · CODE 8.6 모든 요소 출력하기 · CODE 8.7 총점 및 평균 계산
학습 목표
중첩 for 문으로 2차원 배열의 행과 열을 순회하는 구조를 이해하고, 출력과 행별 합계 계산에 적용함
영상 목차 · 원하는 부분부터 보기
  1. 0:00 · 강의 소개와 행·열 순회
  2. 1:05 · 중첩 반복문의 기본 패턴
  3. 2:10 · 모든 요소를 표로 출력
  4. 5:11 · 학생별 총점과 평균
  5. 8:50 · 합계 변수 초기화 위치
  6. 9:50 · 핵심 정리

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 배열, 곧 문자열을 다룸.

이 절의 핵심 정리

  1. 2차원 배열은 행과 열이라는 두 축을 가지므로 중첩 반복문으로 모든 요소를 방문한다.
  2. 순회 기본 패턴에서 바깥쪽 for 문은 행을, 안쪽 for 문은 열을 제어한다.
  3. CODE 8.6은 한 행의 출력이 끝날 때마다 줄을 바꾸어 2행 3열 배열을 표 형태로 출력한다.
  4. CODE 8.7은 안쪽 for 문으로 학생별 세 과목 점수를 더하고 총점과 평균을 출력한다.
  5. sum을 바깥쪽 루프 안에서 초기화해야 학생마다 합계를 새로 계산할 수 있다.
강의 자료8.2.2 중첩 반복문을 이용한 2차원 배열 처리 1 / 12

번호를 누르면 해당 장으로 바로 이동합니다 · 방향키 ← → 로도 넘길 수 있습니다
다음 절 · 8.3.1 C언어와 문자열 교재 245p~247p — 별도의 자료형 없이 char 배열로 다루는 C언어의 문자열 ↗

더 자세한 내용은 교재에서

이 글은 『기초 C언어』 242p~244p의 내용을 강의 영상에 맞춰 핵심만 간추린 요약입니다. 각 개념의 상세한 설명과 예제, 실습 코드, 임용시험 기출문제 풀이는 교재에서 다루고 있습니다.

댓글

이 블로그의 인기 게시물

2007년 국가직 9급 기계일반 기출문제 풀이

기계공작법 연습문제 130문 | 임용 기출 영상·교재 쪽수 바로가기