책 내용 질문하기
2017년 6월 기사 실기 1번 질문
도서
2018 시나공 정보처리기사 실기(산업기사 포함)
페이지
102
조회수
63
작성일
2018-09-27
작성자
탈퇴*원
첨부파일

isprime문 부분에서

위쪽ㄱ에

int = i;

for i = 2; , i<number; , i++)

if ( )

return 0;

return 1;

이렇게 나와있고 빈칸이 number % i == 0 이라고 정답지에 나와있는데

디버깅 표 보니까 i가 2 ㅡ number도 2일때 return값 1을 받는다고 되있는데

대입해보면 2 % 2 = 0 으로 괄호 조건에 부합하고, 그렇다면 return값으로 0을 가져야 하는거 아닌가요??

다른분이 질문한것도 봤는데 디버깅표를 일차원적으로 보지말라고 답변되어 있는데,

디버깅표가 확실히 구분되어있어 그 문제는 아닌거같습니다.

답변
2018-09-28 10:40:47

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

isprime(2)가 호출되었을 때 설명드리겠습니다.

isprime 함수 내에서 number는 2를 갖고 for문으로 들어갑니다.

for (i = 2; i < number; i++)

이 때 for문에 진입하기 전에 조건절을 먼저 참인지 거짓인지 조회해야 합니다. 조건이 맞지 않으면 for문 안의 if문을 수행하지 않기 때문이죠.

number가 2로 들어왔기 때문에 i의 초기값 2와 비교해서 2<2는 거짓이기 때문에 for문을 수행하지 않고, 바로 다음 절인 return 1을 수행하여 반환값이 1이 되는 것입니다.

행복한 하루되세요.^^

  • *
    2018-09-28 10:40:47

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

    isprime(2)가 호출되었을 때 설명드리겠습니다.

    isprime 함수 내에서 number는 2를 갖고 for문으로 들어갑니다.

    for (i = 2; i < number; i++)

    이 때 for문에 진입하기 전에 조건절을 먼저 참인지 거짓인지 조회해야 합니다. 조건이 맞지 않으면 for문 안의 if문을 수행하지 않기 때문이죠.

    number가 2로 들어왔기 때문에 i의 초기값 2와 비교해서 2<2는 거짓이기 때문에 for문을 수행하지 않고, 바로 다음 절인 return 1을 수행하여 반환값이 1이 되는 것입니다.

    행복한 하루되세요.^^

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