책 내용 질문하기
예상문제은행 질문이요
도서
2017 시나공 정보처리기사 실기(산업기사 포함) 특별개정판
페이지
111
조회수
57
작성일
2017-03-22
작성자
첨부파일

111페이지25번에서

i=1부터 시작하는데 i=1 일때 hap+=i를 실행하니깐 hap=1일 때가 있지 않나요 ?

답변
2017-03-23 10:25:23

안녕하세요.

반복문 수행 문장이 반복문 실행 문장에 있는 경우와 증가값 부분에 , 연산자로 연결되어 있는 경우 실행 과정에 차이로 인해 다를 수 있습니다.

아래 내용을 확인해 보세요.

for(i=1; i<=5; ++i)

hap+=i;

System.out.printf("%d, %d", i, hap)

위 코드를 수행하면

i는 초기값으로 1을 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 아래 문장을 수행합니다.

hap에 i가 누적되어 hap은 1이 됩니다.

i는 증가값이 적용되어 2를 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 아래 문장을 수행합니다.

hap에 i가 누적되어 hap은 3이 됩니다.

i는 증가값이 적용되어 3을 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 아래 문장을 수행합니다.

hap에 i가 누적되어 hap은 6이 됩니다.

i는 증가값이 적용되어 4를 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 아래 문장을 수행합니다.

hap에 i가 누적되어 hap은 10이 됩니다.

i는 증가값이 적용되어 5를 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 아래 문장을 수행합니다.

hap에 i가 누적되어 hap은 15가 됩니다.

i는 증가값이 적용되어 6를 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하지 않으므로 반복문을 빠져나와 printf문장을 수행합니다.

i는 6, hap은 15가 됩니다.

for(i=1; i<=5; ++i, hap+=i);

System.out.printf("%d, %d", i, hap)

위 코드를 수행하면

i는 초기값으로 1을 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 반복 문장을 수행합니다. 하지만 수행할 문장이 없습니다. for문 바로 뒤에 ; 이 있기 때문입니다.

증가값 부분에 ++i와 hap+=i가 있으므로 순차적으로 하나씩 수행합니다.

먼저 i가 증가되어 i는 2가 됩니다. 이어서 hap에 i가 누적되어 hap은 2가 됩니다.

그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 반복 문장을 수행합니다. 하지만 수행할 문장이 없으므로

증가값 부분에 ++i와 hap+=i가 있으므로 순차적으로 하나씩 수행합니다.

먼저 i가 증가되어 i는 3이 됩니다. 이어서 hap에 i가 누적되어 hap은 5가 됩니다.

그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 반복 문장을 수행합니다. 하지만 수행할 문장이 없으므로

증가값 부분에 ++i와 hap+=i가 있으므로 순차적으로 하나씩 수행합니다.

먼저 i가 증가되어 i는 4가 됩니다. 이어서 hap에 i가 누적되어 hap은 9가 됩니다.

그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 반복 문장을 수행합니다. 하지만 수행할 문장이 없으므로

증가값 부분에 ++i와 hap+=i가 있으므로 순차적으로 하나씩 수행합니다.

먼저 i가 증가되어 i는 5가 됩니다. 이어서 hap에 i가 누적되어 hap은 14 됩니다.

그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 반복 문장을 수행합니다. 하지만 수행할 문장이 없으므로

증가값 부분에 ++i와 hap+=i가 있으므로 순차적으로 하나씩 수행합니다.

먼저 i가 증가되어 i는 6이 됩니다. 이어서 hap에 i가 누적되어 hap은 20이 됩니다.

그런 다음 종료값(i<=5)과 비교하여 조건을 만족하지 않으므로 반복문을 빠져나와 printf문장을 수행합니다.

i는 6, hap은 20이 됩니다.

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

  • *
    2017-03-23 10:25:23

    안녕하세요.

    반복문 수행 문장이 반복문 실행 문장에 있는 경우와 증가값 부분에 , 연산자로 연결되어 있는 경우 실행 과정에 차이로 인해 다를 수 있습니다.

    아래 내용을 확인해 보세요.

    for(i=1; i<=5; ++i)

    hap+=i;

    System.out.printf("%d, %d", i, hap)

    위 코드를 수행하면

    i는 초기값으로 1을 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 아래 문장을 수행합니다.

    hap에 i가 누적되어 hap은 1이 됩니다.

    i는 증가값이 적용되어 2를 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 아래 문장을 수행합니다.

    hap에 i가 누적되어 hap은 3이 됩니다.

    i는 증가값이 적용되어 3을 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 아래 문장을 수행합니다.

    hap에 i가 누적되어 hap은 6이 됩니다.

    i는 증가값이 적용되어 4를 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 아래 문장을 수행합니다.

    hap에 i가 누적되어 hap은 10이 됩니다.

    i는 증가값이 적용되어 5를 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 아래 문장을 수행합니다.

    hap에 i가 누적되어 hap은 15가 됩니다.

    i는 증가값이 적용되어 6를 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하지 않으므로 반복문을 빠져나와 printf문장을 수행합니다.

    i는 6, hap은 15가 됩니다.

    for(i=1; i<=5; ++i, hap+=i);

    System.out.printf("%d, %d", i, hap)

    위 코드를 수행하면

    i는 초기값으로 1을 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 반복 문장을 수행합니다. 하지만 수행할 문장이 없습니다. for문 바로 뒤에 ; 이 있기 때문입니다.

    증가값 부분에 ++i와 hap+=i가 있으므로 순차적으로 하나씩 수행합니다.

    먼저 i가 증가되어 i는 2가 됩니다. 이어서 hap에 i가 누적되어 hap은 2가 됩니다.

    그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 반복 문장을 수행합니다. 하지만 수행할 문장이 없으므로

    증가값 부분에 ++i와 hap+=i가 있으므로 순차적으로 하나씩 수행합니다.

    먼저 i가 증가되어 i는 3이 됩니다. 이어서 hap에 i가 누적되어 hap은 5가 됩니다.

    그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 반복 문장을 수행합니다. 하지만 수행할 문장이 없으므로

    증가값 부분에 ++i와 hap+=i가 있으므로 순차적으로 하나씩 수행합니다.

    먼저 i가 증가되어 i는 4가 됩니다. 이어서 hap에 i가 누적되어 hap은 9가 됩니다.

    그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 반복 문장을 수행합니다. 하지만 수행할 문장이 없으므로

    증가값 부분에 ++i와 hap+=i가 있으므로 순차적으로 하나씩 수행합니다.

    먼저 i가 증가되어 i는 5가 됩니다. 이어서 hap에 i가 누적되어 hap은 14 됩니다.

    그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 반복 문장을 수행합니다. 하지만 수행할 문장이 없으므로

    증가값 부분에 ++i와 hap+=i가 있으므로 순차적으로 하나씩 수행합니다.

    먼저 i가 증가되어 i는 6이 됩니다. 이어서 hap에 i가 누적되어 hap은 20이 됩니다.

    그런 다음 종료값(i<=5)과 비교하여 조건을 만족하지 않으므로 반복문을 빠져나와 printf문장을 수행합니다.

    i는 6, hap은 20이 됩니다.

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

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