책 내용 질문하기
안녕하세요. 2019 정보처리기사 실기 교재 63쪽, 76쪽 문제 질문이 있습니다.
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
63,76
조회수
274
작성일
2019-08-06
작성자
탈퇴*원
첨부파일

63쪽 문제 5번 출력 결과가 어떻게 나온 건지 이해가 잘 안 가는데 혹시 설명 부탁드려도 될까요..? 지수에 대한 개념이 아직 모호해서요 :(

 

그리고 76쪽 3번 문제는 왜 답이 12인지 궁금합니다! i = 10부터 시작해서 i가 1보다 큰 동안 반복되는 반복문에서 조건이 i를 3으로 나눈 나머지가 1이면 hap 변수에 i를 누적시키라고 했는데, 3으로 나눴을 때 나머지가 1이 되는 i 값은 4 + 7 + 10 = 21이 아닌지요?

답변
2019-08-06 11:05:20

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

 

[1] 지수

지수 표현은 아래에서 * 또는 /가 생략된 형태로 표기됩니다.

(실수)e(* or /)(10의 승수)

 

123.45 를 진수부가 한자리인 수로 표현하기 위해서는 나누기 100을 하면 되니 아래와 같이 표현할 수 있습니다. (진수부 : 실수에서 . 왼쪽부분, 즉 정수부분을 말합니다.)

1.2345*102

이것을 지수표현으로 바꾸게 되면,

1.2345e+2 가 되죠.

 

0.00123을 진수부 한자리인 수로 표현하기 위해서는 곱하기 1000을 하면 되니 아래와 같이 표현이 가능합니다.

1.23/10-3

이것을 지수표현으로 바꾸게 되면,

1.23e-3 이 되죠.

 

 

해당 문제는 위와 같은 방식으로 풀어보시면 됩니다.

123456789.0e-5는 풀어보면 아래와 같은 수가 됩니다.

123456789.0/105 = 1234.56789

이것을 지수부 한 개만 남겨두면

1.23456789*103

지수로 고쳐쓰면

1.23456789e+3

 

여기서 문제는 C에서 별다른 서식지정자를 쓰지 않으면 실수는 소수점 7번째 자리에서 반올림된 6자리만 출력된다는 것입니다. 이것은 지수표현 또한 마찬가지 입니다. 소수점 7번째 자리인 8에서 반올림 하면 6번째 자리인 71 증가하여 8이 됩니다. 수로 표현하게 되면

1.234568e+3이 되는 것이죠.

 

 

[2] 

10으로 초기화된 i가 while문으로 진입하여 처음 if문으로 가기 전에 i--를 수행한다는 점을 잊지 마세요.

if(i%3==1) 에서 처음 i의 값은 9가 됩니다.

즉, 10은 i%3를 수행할 일이 없게되고, 7, 4, 1이 저장되어 12의 결과값이 나옵니다.

1을 3으로 나눈 나머지가 1임을 종종 혼동하시는 경우가 있는데, 수학이 아닌 산수를 하던 시절을 잘 생각하셔야 합니다.

 

4를 3으로 나눈 나머지를 구할 때, 몫은 1, 나머지는 1이 나왔을 것입니다.

이때 나눔 수인 3과 몫 1을 곱한 후 나머지를 더하면 원래 수인 4가 나오게 되죠.

동일하게

 

1을 3으로 나눈 나머지는 몫이 0, 나머지는 1이 나오게 됩니다.

3*0+1=1 이라는 검산 결과로 확인할 수 있죠.

 

 

행복한 하루되세요 :)

  • 관리자
    2019-08-06 11:05:20

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

     

    [1] 지수

    지수 표현은 아래에서 * 또는 /가 생략된 형태로 표기됩니다.

    (실수)e(* or /)(10의 승수)

     

    123.45 를 진수부가 한자리인 수로 표현하기 위해서는 나누기 100을 하면 되니 아래와 같이 표현할 수 있습니다. (진수부 : 실수에서 . 왼쪽부분, 즉 정수부분을 말합니다.)

    1.2345*102

    이것을 지수표현으로 바꾸게 되면,

    1.2345e+2 가 되죠.

     

    0.00123을 진수부 한자리인 수로 표현하기 위해서는 곱하기 1000을 하면 되니 아래와 같이 표현이 가능합니다.

    1.23/10-3

    이것을 지수표현으로 바꾸게 되면,

    1.23e-3 이 되죠.

     

     

    해당 문제는 위와 같은 방식으로 풀어보시면 됩니다.

    123456789.0e-5는 풀어보면 아래와 같은 수가 됩니다.

    123456789.0/105 = 1234.56789

    이것을 지수부 한 개만 남겨두면

    1.23456789*103

    지수로 고쳐쓰면

    1.23456789e+3

     

    여기서 문제는 C에서 별다른 서식지정자를 쓰지 않으면 실수는 소수점 7번째 자리에서 반올림된 6자리만 출력된다는 것입니다. 이것은 지수표현 또한 마찬가지 입니다. 소수점 7번째 자리인 8에서 반올림 하면 6번째 자리인 71 증가하여 8이 됩니다. 수로 표현하게 되면

    1.234568e+3이 되는 것이죠.

     

     

    [2] 

    10으로 초기화된 i가 while문으로 진입하여 처음 if문으로 가기 전에 i--를 수행한다는 점을 잊지 마세요.

    if(i%3==1) 에서 처음 i의 값은 9가 됩니다.

    즉, 10은 i%3를 수행할 일이 없게되고, 7, 4, 1이 저장되어 12의 결과값이 나옵니다.

    1을 3으로 나눈 나머지가 1임을 종종 혼동하시는 경우가 있는데, 수학이 아닌 산수를 하던 시절을 잘 생각하셔야 합니다.

     

    4를 3으로 나눈 나머지를 구할 때, 몫은 1, 나머지는 1이 나왔을 것입니다.

    이때 나눔 수인 3과 몫 1을 곱한 후 나머지를 더하면 원래 수인 4가 나오게 되죠.

    동일하게

     

    1을 3으로 나눈 나머지는 몫이 0, 나머지는 1이 나오게 됩니다.

    3*0+1=1 이라는 검산 결과로 확인할 수 있죠.

     

     

    행복한 하루되세요 :)

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