책 내용 질문하기
c언어 문제 질문입니다
도서
2017 시나공 정보처리기사 실기(산업기사 포함) 특별개정판
페이지
84
조회수
77
작성일
2017-03-20
작성자
첨부파일

문제 3번 질문입니다

for문이 총 10회 반복되는건 알겠는데 배열에 값이 어떻게 누적되서 답이 출력되는지 이해되지 않습니다

답변
2017-03-21 09:34:01

안녕하세요.

값이 누적되는 과정을 해설에 배열 그림과 함께 자세히 수록하였습니다.

for문의 원리를 염두에 두고 살펴보세요.

for (j = 0; j < 5; ++j)

for (i = 0; i < j; ++i)

numAry[j] += numAry[i];

위쪽 반복문

j는 초기값 0을 가지고 종료값(j < 5)과 비교합니다. 조건을 만족하므로 아래쪽 반복문을 수행합니다.

아래쪽 반복문

i는 초기값 0을 가지고 종료값(i < j)과 비교합니다. i와 j가 0이므로 조건을 만족하지 않으므로 아래쪽 for문을 빠져나와 다시 위쪽 반복문을 수행합니다.

위쪽 반복문

증가값(++j)이 적용되어 j는 1이 됩니다. 종료값(j < 5)과 비교합니다. 조건을 만족하므로 아래쪽 반복문을 수행합니다.

아래쪽 반복문

다시 반복문을 진입했으므로 i는 초기값 0을 가지고 종료값(i < j)과 비교합니다. i는 0 j는 1이므로 조건을 만족하므로 아래쪽 문장을 수행합니다.

numAry[j] += numAry[i];

numAry[1]은 현재 0이고 numAry[i]는 현재 1이므로 numAry[1]의 값이 1로 변경됩니다.

그 과정이 해설 디버깅 표의 2번째 줄의 내용입니다.

증가값(++i)이 적용되어 i는 1이 됩니다. 종료값(i < j)과 비교합니다. i와 j가 1이므로 조건을 만족하지 않으므로 아래쪽 for문을 빠져나와 다시 위쪽 반복문을 수행합니다.

위의 내용이 반복적으로 수행되면서 배열의 값이 누적됩니다.

앞서 언급한 내용을 염두에 두고 차분히 디버깅을 다시 한 번 수행해 보세요.

오늘도 즐거운 하루 되세요.

  • *
    2017-03-21 09:34:01

    안녕하세요.

    값이 누적되는 과정을 해설에 배열 그림과 함께 자세히 수록하였습니다.

    for문의 원리를 염두에 두고 살펴보세요.

    for (j = 0; j < 5; ++j)

    for (i = 0; i < j; ++i)

    numAry[j] += numAry[i];

    위쪽 반복문

    j는 초기값 0을 가지고 종료값(j < 5)과 비교합니다. 조건을 만족하므로 아래쪽 반복문을 수행합니다.

    아래쪽 반복문

    i는 초기값 0을 가지고 종료값(i < j)과 비교합니다. i와 j가 0이므로 조건을 만족하지 않으므로 아래쪽 for문을 빠져나와 다시 위쪽 반복문을 수행합니다.

    위쪽 반복문

    증가값(++j)이 적용되어 j는 1이 됩니다. 종료값(j < 5)과 비교합니다. 조건을 만족하므로 아래쪽 반복문을 수행합니다.

    아래쪽 반복문

    다시 반복문을 진입했으므로 i는 초기값 0을 가지고 종료값(i < j)과 비교합니다. i는 0 j는 1이므로 조건을 만족하므로 아래쪽 문장을 수행합니다.

    numAry[j] += numAry[i];

    numAry[1]은 현재 0이고 numAry[i]는 현재 1이므로 numAry[1]의 값이 1로 변경됩니다.

    그 과정이 해설 디버깅 표의 2번째 줄의 내용입니다.

    증가값(++i)이 적용되어 i는 1이 됩니다. 종료값(i < j)과 비교합니다. i와 j가 1이므로 조건을 만족하지 않으므로 아래쪽 for문을 빠져나와 다시 위쪽 반복문을 수행합니다.

    위의 내용이 반복적으로 수행되면서 배열의 값이 누적됩니다.

    앞서 언급한 내용을 염두에 두고 차분히 디버깅을 다시 한 번 수행해 보세요.

    오늘도 즐거운 하루 되세요.

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.