책 내용 질문하기
83-125쪽 한꺼번에 질문하겠습니다
도서
2017 시나공 정보처리기사 실기(산업기사 포함) 특별개정판
페이지
83
조회수
135
작성일
2017-10-05
작성자
탈퇴*원
첨부파일

p.83

문제1. ("8.3s/n" , str);이라고 했는데 이건 3문자만 출력한다고 생각하면되나요?

간혹 -10.3/s 10.3/s를 출력하라는 말이있는데 이거는 왼쪽 오른쪽기준이라는 말을 확실히 알겠습니다만 -가 없어도

보통은 왼쪽출력이라 생각하면 되겠지요?

p.90

문제1. 전역변수와 지역변수로 a는 리턴값을 가지고 b는 변함이 없는데 쉽게 b는 {}안에서만 효력이 있다고 생각하면 되나요?

p.100

문제4. myVar.a += myVatr.b -= myVar.c *= 10; 이라 나와있는 이런 부분은 보통 뒤에서부터 풀이를 하나요?

저는 myVar.a += myVatr.b 하고 myVatr.b -= myVar.c 이런식으로 했는데 뒷부분 문제도 다 뒤부터 풀고 앞에 식에 적용하더라구요...

p.102-125

문제3. 이진수로 변환하면 1111과 10011로 자릿수 하나차이로 저는 01111과 10011로 계산했는데

여기서는 왜 8자리로 끊는지 알려주세용

문제8. 실수형을 왜 이렇게 나타내는지 이해가 가질 않습니다ㅜㅜ 실수형은 소수점6자리를 나타낸다면 왜1234.567871로 뒤에가 71로 끝나는지 궁금합니다.

문제10. 교재 60쪽을 참고하여 우선순위를 두고 풀이했는데 먼저 * / % 순아닌가요?

왜 답지는 반대로 풀이하나용?ㅜㅜ

또한 ++이나 -로 나온부분은 먼저하고 그 주변의 식을 계산해주나요??

문제17번에서 d=d*(7-c++)로 계산해주더라구용

문제19번에서도 우선순위를 + -로 볼때 0-1+5면 그냥 앞부터 계산인가요?

우선순위에만 초점을 두고 문제풀이를 하니까 너무 헷갈려서 알려주세여ㅜㅜㅜㅜㅜㅜㅜ

문제34. for문을 출력하라는 뜻으로 생각하고 1-0, 2-2,...으로 진행하는 건 알겠는데 6-20으로 for문을 빠져나오게 되는데 어째서 6-20은 답이 아닌가요?

문제40. for(i =1; i <= 5; ++i);

hap += i; 라는 문장에서 저는 for(초기값, 최종값, 증가값)으로 취급하여 결과를 hap=hap+i로 출력한다고 생각했는데 문장이 세미콜론으로 끝나기 때문에 for문을 종료한 후 마지막 i값만을 hap에 적용해준건가요?

그럼 지금까지와의 문제하곤 조금 다른 문제인가요?

문제52, 좀 부연 설명해주세요..

긴글 읽어주셔서 감사합니다!!

답변
2017-10-11 09:40:55

안녕하세요.

1)

예, 맞습니다.

문자열 서식 연산자인 %s는 왼쪽 부터 출력합니다. 하지만 %-8.3s와 같이 -가 붙으면 오른쪽 부터 출력됩니다.

2)

예, 맞습니다.

지역변수는 해당 변수가 선언된 { } 안에서만 유효합니다.

3)

myVar.a += myVatr.b -= myVar.c *= 10;

위 수식은

myVar.a += (myVatr.b -= myVar.c *= 10);

으로 뒤 괄호 부분을 하나로 생각해서 A라고 하면

myVar.a += A; 이므로 myVar.a = myVar.a + A;

와 같습니다. 위 수식을 계산하려면 먼저 A를 계산해야 하는데, A는

myVatr.b -= myVar.c *= 10

으로 역시 뒤쪽을 괄호로 묶으면

myVatr.b -= (myVar.c *= 10)

와 괕습니다. 뒤 괄호를 B라고 생각하면

myVatr.b -= B 이므로 myVar.b = myVar.b - B

와 같습니다. 위 수식을 계산하려면 먼저 B를 계산해야 하는데, B는

myVar.c *= 10

으로

myVar.c = myVar.c * 10

과 같습니다. 이제 뒤쪽 괄호 부분들을 계산한 후 그 결과를 앞쪽에 대입하여 계산하면 됩니다.

이런 원리 때문에 뒤에서부터 계산되는 것처럼 인식되는 것입니다.

4)

정수형 변수는 크기가 1byte이기 때문입니다. 그러므로 1byte, 즉 8bit로 표현해서 계산하는 것입니다.

5)

float a = 123456789.0e-5f;

printf("소수점a = %6.1f 지수형a = %e\n", a, a);

123456789.0e-5f 에 의해 지수형태로 저장된 a의 값을 원래대로 변경하면 소수점 위치를 왼쪽으로 5칸 이동한 값인

1234.56789가 됩니다.

이 값을 6.1f로 출력하면

______ 소수점을 포함하여 6자리를 확보하여 소수점 1자리를 출력해야 하므로

____.6 이 됩니다. 소수점 첫 째자리까지 출력해야 하는데, 둘째 자리에서 반올림이 되어 .6이 출력되었습니다.

나머지 4자리에 정수 부분을 출력합니다. 만일 출력할 정수 부분보다 확보된 자리수가 적으면 정수는 모두 출력됩니다.

1234.6이 출력됩니다.

%e로 출력하면

소수점 자리수가 지정되지 않으면 f나 e는 모두 기본적으로 소수점 6자리로 출력합니다.

e는 정수 부분을 1자리만 출력하므로

1.234568 이 됩니다. 역시 소수점 마지막 6자리는 7째 자리에서 반올림 된 것이고

1.234568 은 원래의 값 1234.56789에서 소수점 위치가 왼쪽으로 3자리 이동했으므로 e+03이 되어

1.234568e+03으로 출력이 되는 것입니다.

6)

* / %의 우선 순위는 같고 + - 보다는 높습니다.

그러므로 같은 우선 순위에서는 나온 순서대로 진행하므로

%, /, *을 먼저 하고 나중에 -를 계산합니다.

7)

++이나 --가 다른 수식에 포함된 경우 ++a와 같이 전치인경우 먼저 증가한 후 수식에 a를 적용하고

a++와 같이 후치인 경우 a의 값을 우선 수식에 사용한 후 나중에 증가를 합니다.

8)

출력은 for문 안에서만 수행합니다.

i가 6이고 hap이 20이 된 후에는 for문을 진입하지 못하고 빠져나오기 때문에 출력은 되지 않습니다.

9)

예, 맞습니다.

for문 뒤에 세미콜론(;)이 있으면 for문에 따린 실행문은 없으므로 for문만 수행합니다.

그런 다음 for문이 완료되면 그 아래 문장인 hpa+=i;를 수행합니다.

10)

main() 함수에서 push()나 pop() 함수를 호출할 때마다 해당 함수를 수행하는 과정입니다.

해설이 자세히 설명되어 있는 내용인데, 혹 해설이 잘 이해되지 않으신다면

2장 예상문제는 토막강의가 제공되지 강의를 확인해 보세요.

강의는 왼쪽의 프리미엄존 - 토막강의 코너 맨 위 공지사항에 등록되어 있습니다.

오늘도 즐거운 하루 되세요.

  • *
    2017-10-11 09:40:55

    안녕하세요.

    1)

    예, 맞습니다.

    문자열 서식 연산자인 %s는 왼쪽 부터 출력합니다. 하지만 %-8.3s와 같이 -가 붙으면 오른쪽 부터 출력됩니다.

    2)

    예, 맞습니다.

    지역변수는 해당 변수가 선언된 { } 안에서만 유효합니다.

    3)

    myVar.a += myVatr.b -= myVar.c *= 10;

    위 수식은

    myVar.a += (myVatr.b -= myVar.c *= 10);

    으로 뒤 괄호 부분을 하나로 생각해서 A라고 하면

    myVar.a += A; 이므로 myVar.a = myVar.a + A;

    와 같습니다. 위 수식을 계산하려면 먼저 A를 계산해야 하는데, A는

    myVatr.b -= myVar.c *= 10

    으로 역시 뒤쪽을 괄호로 묶으면

    myVatr.b -= (myVar.c *= 10)

    와 괕습니다. 뒤 괄호를 B라고 생각하면

    myVatr.b -= B 이므로 myVar.b = myVar.b - B

    와 같습니다. 위 수식을 계산하려면 먼저 B를 계산해야 하는데, B는

    myVar.c *= 10

    으로

    myVar.c = myVar.c * 10

    과 같습니다. 이제 뒤쪽 괄호 부분들을 계산한 후 그 결과를 앞쪽에 대입하여 계산하면 됩니다.

    이런 원리 때문에 뒤에서부터 계산되는 것처럼 인식되는 것입니다.

    4)

    정수형 변수는 크기가 1byte이기 때문입니다. 그러므로 1byte, 즉 8bit로 표현해서 계산하는 것입니다.

    5)

    float a = 123456789.0e-5f;

    printf("소수점a = %6.1f 지수형a = %e\n", a, a);

    123456789.0e-5f 에 의해 지수형태로 저장된 a의 값을 원래대로 변경하면 소수점 위치를 왼쪽으로 5칸 이동한 값인

    1234.56789가 됩니다.

    이 값을 6.1f로 출력하면

    ______ 소수점을 포함하여 6자리를 확보하여 소수점 1자리를 출력해야 하므로

    ____.6 이 됩니다. 소수점 첫 째자리까지 출력해야 하는데, 둘째 자리에서 반올림이 되어 .6이 출력되었습니다.

    나머지 4자리에 정수 부분을 출력합니다. 만일 출력할 정수 부분보다 확보된 자리수가 적으면 정수는 모두 출력됩니다.

    1234.6이 출력됩니다.

    %e로 출력하면

    소수점 자리수가 지정되지 않으면 f나 e는 모두 기본적으로 소수점 6자리로 출력합니다.

    e는 정수 부분을 1자리만 출력하므로

    1.234568 이 됩니다. 역시 소수점 마지막 6자리는 7째 자리에서 반올림 된 것이고

    1.234568 은 원래의 값 1234.56789에서 소수점 위치가 왼쪽으로 3자리 이동했으므로 e+03이 되어

    1.234568e+03으로 출력이 되는 것입니다.

    6)

    * / %의 우선 순위는 같고 + - 보다는 높습니다.

    그러므로 같은 우선 순위에서는 나온 순서대로 진행하므로

    %, /, *을 먼저 하고 나중에 -를 계산합니다.

    7)

    ++이나 --가 다른 수식에 포함된 경우 ++a와 같이 전치인경우 먼저 증가한 후 수식에 a를 적용하고

    a++와 같이 후치인 경우 a의 값을 우선 수식에 사용한 후 나중에 증가를 합니다.

    8)

    출력은 for문 안에서만 수행합니다.

    i가 6이고 hap이 20이 된 후에는 for문을 진입하지 못하고 빠져나오기 때문에 출력은 되지 않습니다.

    9)

    예, 맞습니다.

    for문 뒤에 세미콜론(;)이 있으면 for문에 따린 실행문은 없으므로 for문만 수행합니다.

    그런 다음 for문이 완료되면 그 아래 문장인 hpa+=i;를 수행합니다.

    10)

    main() 함수에서 push()나 pop() 함수를 호출할 때마다 해당 함수를 수행하는 과정입니다.

    해설이 자세히 설명되어 있는 내용인데, 혹 해설이 잘 이해되지 않으신다면

    2장 예상문제는 토막강의가 제공되지 강의를 확인해 보세요.

    강의는 왼쪽의 프리미엄존 - 토막강의 코너 맨 위 공지사항에 등록되어 있습니다.

    오늘도 즐거운 하루 되세요.

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