책 내용 질문하기
120p 34번, 128 50번 문제
도서
2018 시나공 정보처리기사 실기(산업기사 포함)
페이지
120,128
조회수
1249
작성일
2019-03-10
작성자
탈퇴*원
첨부파일

120p의 34번 문제에서 for문의 초기값이 1일 때, 증감식으로 인해 2부터 출력이 되는 것이 아닌가요? printf문 "합은 1     0입니다." 가 왜 출력되는지 이해가 안돼요..


for문(초기식; 조건식; 증감식, 식) 일때 해설에서는 증감식과 식을 순서대로 수행하라고 하셨는데 순서대로 한다면 1은 출력되면 안되지 않나요?

 

 

또 128p의 50번 문제에서는 for문 옆에 ;이 없는데 왜 한 줄만 출력되나요?

그리고 i가 100일때 hap += i; 를 수행 후 printf문 "100, 5050입니다." 출력 후 for문의 ++i로 인해 101(출력은 x)이 돼야 되는거 아닌가요?


전체적인 흐름 좀 자세히 알려주세요..
for문(초기식; 조건식; 증감식)
식;
이런 구조일 때 초기식이 조건식에 참일 경우 식;을 수행한 후 증감식을 수행하고 조건식에 비교하고 이렇게 돌아가는 시스템으로 알고 있는데 잘못알고 있는건가요?  

답변
2019-03-11 16:04:08

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

 

for문의 작동 순서를 혼동하신 것 같습니다.

 

for() {

;

}

 

위의 for문이 를 3회 반복한다고 가정했을 때순서는

1회 (조건 참), 

2회 (조건 참), 

3회 (조건 참), 

4회 (조건 거짓) <탈출>

입니다.

 

이것의 위의 반복문에 적용한다고 가정하면,

 

1회 : i는 1이 되고, i<=5를 판별한 뒤(참), 출력을 수행합니다. "합은1  0입니다."

2회 : i는 2, 합은 2가 되고, i<=5를 판별한 뒤(참), 출력을 수행합니다. "합은2   2입니다."

 

for문의 작동순서를 다시 한 번 확인해보시고, 코드를 따라가 보세요.


------------------


두번째 질문 50번도 마찬가지 입니다.


for문을 기재할 때, {}가 없다면 한줄만을 반복 수행합니다.


예1) for (i=1; i<=100; i++)

            a=a+1;

      printf("aaa");

위와 같은 식이 있다면 a=a+1을 100번 수행하게 되겠죠. for문이 끝나고 aaa를 출력합니다.

 

예2) for (i=1; i<=100; i++);

      a=a+1;

      printf("aaa");

위와 같은 식이 있다면 a=a+1은 for문이 종료 후 1회만 수행되게 됩니다. aaa도 마찬가지로 종료후 1회 출력됩니다.

(세미콜론의 위치를 잘 파악하세요)


예1) for (i=1; i<=100; i++) {

      a=a+1;

      }

      printf("aaa");

위와 같은 식은 예1과 동일합니다. 중괄호{}로 묶인 모든 식을 100번 수행하게 되겠죠. aaa는 for문이 종료후 출력되게 됩니다.


문제 50번은 예1과 같습니다. hap+=i를 100회 수행된 후 i와 hap을 출력하게 됩니다.

다만 for문이 종료될 때 증가식이 적용된 후에 빠져나온다는 점을 염두에 두세요.


앞에 답변을 드렸던 for문의 순서를 보시면 마지막에 증가식인 ③을 수행하고 빠져나옴을 알 수 있습니다.

때문에 답이 101, 5050이 되는 것입니다.


행복한 하루되세요 :)

  • 관리자
    2019-03-11 16:04:08

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

     

    for문의 작동 순서를 혼동하신 것 같습니다.

     

    for() {

    ;

    }

     

    위의 for문이 를 3회 반복한다고 가정했을 때순서는

    1회 (조건 참), 

    2회 (조건 참), 

    3회 (조건 참), 

    4회 (조건 거짓) <탈출>

    입니다.

     

    이것의 위의 반복문에 적용한다고 가정하면,

     

    1회 : i는 1이 되고, i<=5를 판별한 뒤(참), 출력을 수행합니다. "합은1  0입니다."

    2회 : i는 2, 합은 2가 되고, i<=5를 판별한 뒤(참), 출력을 수행합니다. "합은2   2입니다."

     

    for문의 작동순서를 다시 한 번 확인해보시고, 코드를 따라가 보세요.


    ------------------


    두번째 질문 50번도 마찬가지 입니다.


    for문을 기재할 때, {}가 없다면 한줄만을 반복 수행합니다.


    예1) for (i=1; i<=100; i++)

                a=a+1;

          printf("aaa");

    위와 같은 식이 있다면 a=a+1을 100번 수행하게 되겠죠. for문이 끝나고 aaa를 출력합니다.

     

    예2) for (i=1; i<=100; i++);

          a=a+1;

          printf("aaa");

    위와 같은 식이 있다면 a=a+1은 for문이 종료 후 1회만 수행되게 됩니다. aaa도 마찬가지로 종료후 1회 출력됩니다.

    (세미콜론의 위치를 잘 파악하세요)


    예1) for (i=1; i<=100; i++) {

          a=a+1;

          }

          printf("aaa");

    위와 같은 식은 예1과 동일합니다. 중괄호{}로 묶인 모든 식을 100번 수행하게 되겠죠. aaa는 for문이 종료후 출력되게 됩니다.


    문제 50번은 예1과 같습니다. hap+=i를 100회 수행된 후 i와 hap을 출력하게 됩니다.

    다만 for문이 종료될 때 증가식이 적용된 후에 빠져나온다는 점을 염두에 두세요.


    앞에 답변을 드렸던 for문의 순서를 보시면 마지막에 증가식인 ③을 수행하고 빠져나옴을 알 수 있습니다.

    때문에 답이 101, 5050이 되는 것입니다.


    행복한 하루되세요 :)

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