책 내용 질문하기
실전모의고사1번문제
도서
2020 시나공 정보처리기사 실기 [기본서]
페이지
1
조회수
210
작성일
2020-07-10
작성자
탈퇴*원
첨부파일

실전모의고사 1번문제에

#include <stdio.h>

main()

{

    int k=2, j;

    while(1) {                            

        j=2;                               

        while(k%j != 0)                  // 이부분 만족하지 않을때  아래 IF문으로 넘어가고

            j++;                           

        if(k == j)                         // 이부분을 만족하지 않을때 아래 IF문으로 넘어가고

            printf("%d",k);             

        if(k<7)                           // 이부분을 만족할때 K값을 증가로 생각됩니다.

            k++;

        else

            break;

        

    }

}

 

처음 while(k%j != 0) 문을 만났을때 K가 4이고 J가 2일때 나머지가 0 이으로 다음 if문으로 넘어가면

 if(k == j) 이 조건문도 만족하지 않으니 다음 if문으로 넘어가죠 

 if(k<7) 이부분을 만족하여 K값을 증가하고 5가 되었을때부터 이해가 되질 않습니다.

 

다시 while(k%j != 0) 문을 만낫을때 K가 5이고 J가 2일때 나머지가 1로 J값을 증감한후 다음if문으로 넘어갈때

if(k == j) 5와3이 같지 않으므로 다음 if문으로 넘어가게되면 

k값이 6이 되므로 결국 답과는 거리가 먼 결과가 나타나게 되는데

 

여기서 부터 풀어나가는데 막힙니다.

 

추가의견

while(k%j != 0) 이부분에서 조건에 만족할 경우 만족하지 않을때까지 반복한 후 다음으로 넘어가게되니

                 정답이 유추가 됩니다. 

 

 

 

 

답변
2020-07-13 11:07:10

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

 

...? 추가의견에서 스스로 정답을 내신 것 같습니다.

 

while(k%j != 0)

     j++; 

 

이 부분은 k%j의 값이 0이 아닌 경우 0이 될 때까지 j++; 을 반복하라는 의미가 됩니다.

즉 5의 경우 2로 나눠서 아니니 j의 값 1증가(3), 다시 3으로 나눠서 아니니 j의 값 증가(4), 다시 4로 나눠서 아니니 j의 값 증가(5), 다시 5로 나누니 나머지가 0이므로 while문 조건을 만족하지 않아서 빠져나가게 되고, 다음 if문 if (k==j)를 만나게 되는 것입니다.

 

행복한 하루되세요 :)

  • 관리자
    2020-07-13 11:07:10

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

     

    ...? 추가의견에서 스스로 정답을 내신 것 같습니다.

     

    while(k%j != 0)

         j++; 

     

    이 부분은 k%j의 값이 0이 아닌 경우 0이 될 때까지 j++; 을 반복하라는 의미가 됩니다.

    즉 5의 경우 2로 나눠서 아니니 j의 값 1증가(3), 다시 3으로 나눠서 아니니 j의 값 증가(4), 다시 4로 나눠서 아니니 j의 값 증가(5), 다시 5로 나누니 나머지가 0이므로 while문 조건을 만족하지 않아서 빠져나가게 되고, 다음 if문 if (k==j)를 만나게 되는 것입니다.

     

    행복한 하루되세요 :)

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