책 내용 질문하기
p213에 문제 31번에 대한 질문입니다.
도서
2020 시나공 정보처리기능사 실기 : NCS 기반 전면 개편
페이지
213
조회수
381
작성일
2020-05-11
작성자
탈퇴*원
첨부파일

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

 System.out.print("합은%d %4d입니다.\n", i , hap);

 

부분에서 i=1 일때

i는 ++i로 인해 2가 되고 hap은 초기값인 0과 i=2를 더해서 2가 됩니다 따라서, '합은2     2입니다'라고 출력이 된다고 생각하여

'합은2     2입니다'부터 시작해야 한다고 생각합니다.

 

왜냐면 조건문에서 시작을 i가 1일때 시작해서 ++i에 의해서 2가 i에 저장이되고 그에 따라 hap이 진행된다고 생각하기 때문입니다.

또한, 문제에서int i=0,hap=0; 으로 했지만 조건문에서는 i=1부터 시작을 했기에 그에 따라 i는 2가 되고 hap은 2가 되어야하며 그러므로 출력도 '합은2     2입니다'부터 출력되어야 한다고 생각합니다.

 

또한 '합은1     0입니다'부터 출력되는거라면 ++i와 hap+=i 는 왜 진행되지 않는지 궁금합니다.

 

자세한 설명을 부탁드립니다

답변
2020-05-12 10:28:13

안녕하세요 길벗수험서 운영팀입니다.

 

for문의 수행 순서를 알아두실 필요가 있습니다.

for문을 간략화 시키면 다음과 같습니다.

  for(①; ②; ③) 

     ④;

 

for문이 5회 반복한다고 가정할 때 다음과 같이 각 부분이 수행됩니다.

1회 : ①, ②(조건 참), ④

2회 : ③, ②(조건 참), ④

3회 : ③, ②(조건 참), ④

4회 : ③, ②(조건 참), ④

5회 : ③, ②(조건 참), ④

종료 : ③, ②(조건 거짓) <탈출>

 

즉, ③에 해당하는 ++i, hap+=i 부분은 출력문이 처음 수행되는 1회의 ④에서는 한 번도 수행되지 않았으므로 "합은 1  0입니다"를 출력하게 되죠.

 

행복한 하루되세요 :)

  • 관리자
    2020-05-12 10:28:13

    안녕하세요 길벗수험서 운영팀입니다.

     

    for문의 수행 순서를 알아두실 필요가 있습니다.

    for문을 간략화 시키면 다음과 같습니다.

      for(①; ②; ③) 

         ④;

     

    for문이 5회 반복한다고 가정할 때 다음과 같이 각 부분이 수행됩니다.

    1회 : ①, ②(조건 참), ④

    2회 : ③, ②(조건 참), ④

    3회 : ③, ②(조건 참), ④

    4회 : ③, ②(조건 참), ④

    5회 : ③, ②(조건 참), ④

    종료 : ③, ②(조건 거짓) <탈출>

     

    즉, ③에 해당하는 ++i, hap+=i 부분은 출력문이 처음 수행되는 1회의 ④에서는 한 번도 수행되지 않았으므로 "합은 1  0입니다"를 출력하게 되죠.

     

    행복한 하루되세요 :)

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