책 내용 질문하기
안녕하세요. 2019 정보처리기사 실기 교재 63쪽, 76쪽 문제 질문이 있습니다.
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
63,76
조회수
335
작성일
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번째 자리인 7이 1 증가하여 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번째 자리인 7이 1 증가하여 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, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.