책 내용 질문하기
정보처리기사 실기 2017년 특별개정판 p102쪽 예상문제은행 1번관련입니다.
도서
2017 시나공 정보처리기사 실기(산업기사 포함) 특별개정판
페이지
625
조회수
60
작성일
2017-03-22
작성자
첨부파일

문제에서 i가 8보다 작은경우 출력되는 i값과 j값을 찾는질문인데

i가 8일때 출력되는건 이해했는데 왜 그때 j값이 26이죠?

i가 출력되기 전 j값까지 처리를 해서 j값이 36으로 나와야 하는거 아닌가요 ??

이를테면, 73쪽 예제문제에서 i가 8대신 10보다 작은경우지만

초기값, 출력조건값 등 다른 조건식이 동일한 이 문제에서는

i값이 10일때 출력되고 10까지의 누적값인 55로 j값이 나온다고 하였습니다.

이부분이 너무 헷갈리네요..

답변
2017-03-23 09:32:05

안녕하세요.

디버깅을 수행하면서 각 코드를 하나 하나 따라가보면 이해가 쉽습니다.

i, j가 선언되면서 j에는 0이 초기화됩니다.

for문을 만나

i가 0으로 초기화됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.

j += i;가 수행되어 j에 i가 누적됩니다. j는 0이 됩니다.

반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.

i는 1이 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.

j += i;가 수행되어 j에 i가 누적됩니다. j는 1이 됩니다.

반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.

i는 2가 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.

j += i;가 수행되어 j에 i가 누적됩니다. j는 3이 됩니다.

반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.

i는 3이 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.

j += i;가 수행되어 j에 i가 누적됩니다. j는 6이 됩니다.

반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.

i는 4가 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.

j += i;가 수행되어 j에 i가 누적됩니다. j는 10이 됩니다.

반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.

i는 5가 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.

j += i;가 수행되어 j에 i가 누적됩니다. j는 15가 됩니다.

반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.

i는 6이 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.

j += i;가 수행되어 j에 i가 누적됩니다. j는 21이 됩니다.

반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.

i는 7이 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.

j += i;가 수행되어 j에 i가 누적됩니다. j는 28이 됩니다.

반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.

i는 8이 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하지 않으므로 반복문을 빠져나옵니다.

printf를 만나 출력할 때 i는 현재 8이고 j는 현재 28인 상태입니다.

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

  • *
    2017-03-23 09:32:05

    안녕하세요.

    디버깅을 수행하면서 각 코드를 하나 하나 따라가보면 이해가 쉽습니다.

    i, j가 선언되면서 j에는 0이 초기화됩니다.

    for문을 만나

    i가 0으로 초기화됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.

    j += i;가 수행되어 j에 i가 누적됩니다. j는 0이 됩니다.

    반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.

    i는 1이 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.

    j += i;가 수행되어 j에 i가 누적됩니다. j는 1이 됩니다.

    반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.

    i는 2가 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.

    j += i;가 수행되어 j에 i가 누적됩니다. j는 3이 됩니다.

    반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.

    i는 3이 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.

    j += i;가 수행되어 j에 i가 누적됩니다. j는 6이 됩니다.

    반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.

    i는 4가 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.

    j += i;가 수행되어 j에 i가 누적됩니다. j는 10이 됩니다.

    반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.

    i는 5가 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.

    j += i;가 수행되어 j에 i가 누적됩니다. j는 15가 됩니다.

    반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.

    i는 6이 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.

    j += i;가 수행되어 j에 i가 누적됩니다. j는 21이 됩니다.

    반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.

    i는 7이 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.

    j += i;가 수행되어 j에 i가 누적됩니다. j는 28이 됩니다.

    반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.

    i는 8이 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하지 않으므로 반복문을 빠져나옵니다.

    printf를 만나 출력할 때 i는 현재 8이고 j는 현재 28인 상태입니다.

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

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