책 내용 질문하기
java 질문있습니다.
도서
2017 시나공 정보처리기사 실기(산업기사 포함) 특별개정판
페이지
조회수
70
작성일
2017-03-20
작성자
첨부파일

java 쪽 예상문제를 풀다가 부족한 부분이 있어서 질문드립니다.

for문에서

int=0, hap=0 일때

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

hap+=i;

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

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

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

의 결과값의 차이가 어떻게 나는지 궁금합니다.

계산과정의 차이를 설명해주시면 정말 감사하겠습니다.

답변
2017-03-21 09:18:33

안녕하세요.

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-21 09:18:33

    안녕하세요.

    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, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.