Taek

7. Exercises 본문

C언어/문제 정리

7. Exercises

Taeky 2018. 8. 9. 23:09

1.

a) 7 * 8 + 7 = 63

b) 16 * 7 + 7 = 119

c) 10 * 16 * 16 + 16 * 11 + 12 = 2748


2. d) 

a), b), e)는 floating을 표현하는 방식이다. c)는 8진법으로 정수를 표현하는 방식이고

d)는 없는 방법.


3. b) 

short형은 short int로 정수형이다. float은 실수형이라 없는 type이다.


4. d)

printf는 conversion specification을 맞춰서 유연하게 쓸 수 있지만, 특정 문자를 출력하긴 불가능하다. 

단, 문자열은 출력할 수 있다. 문자와 문자열은 뒤에 나오게 된다.


5. b) C언어는 2진법을 직접 사용할 수 없다. 1000001이 65라도 C에서 허용하지 않아서 오답.

a) A는 65이다. a는 97

c) 0이 앞에 나오면 8진법이다. 64 + 1이니 65.

d) 0x는 16진법. 65를 표현함


6. 

char형은 1바이트, 128개 숫자를 사용할 수 있다.

short형은 2바이트, 2의 15제곱 -1까지 사용할 수 있다.

int형은 4바이트, 2의 31제곱 -1, long int형은 8바이트까지 사용할 수 있다.

a) 한 달에 최대 31일까지이니 char형으로도 충분하다.

b) 1년에 365일이니 short형 이상이 필요하다.

c) 24 * 60 = 1440이니 역시 short형 이상

d) 1440 * 60이니 int형 이상이 필요함.


7. 각 escape sequences를 숫자 코드로 바꾸려면 \뒤에 필요한 아스키코드를 적어야 한다. 8진법

a) \10

b) \12

c) \15

d) \11


8. 7번을 16진법으로.

a) \x08

b) \x0a

c) \x0d

d) \x09


9. int형으로 나온다.

i / j는 원래대로라면 실수형이 나와야 하지만, int형에서 형바꿈을 하지 않았기 때문에 int형이 되고, char형인 'a'는 C에서 정수형으로 다루기 때문에 계산이 가능하다. 따라서 int형.


10. int형.

(int) j * k는 결과가 int형으로 변환되도록 explicit conversion을 지정했다. 따라서 int형인 i와 더하면 int형.


11. double형.

float형과 int형을 곱하면 implicit conversion에 의해 float형으로 결과가 나오고, 다시 double형으로 나누면 double형으로 바뀐다.


12. double형.

lvalue를 기준으로 결과값이 저장된다. 따라서 int형, float형이 더해지면서 float형으로 값이 나오지만 다시 double형으로 변해 저장된다.


13. 

a) c * i = 1 * (-3) = -3, char와 int형을 곱하면 int형.

b) s + m = 7, short형 + long형은 long형을 반환.

c) f / c = 6.5, float형 / char형은 float형 반환.

d) d / s = 3.25, double / short형은 double형을 반환.

e) f - d = -1.0, float형 - double형은 double형을 반환.

f) int형으로 강제 형변환을 하면 소수점 이하가 버려진다. 따라서 6

char c의 '\1'은 1이다. 


14. 아니다. 

float형의 소수점 이하만 얻어내기 위한 식이다. 

(int) f로 int형으로 explicit conversion을 하기 때문에 소수점 이하는 버려진다. 

이 상태에서 f - (int) f를 한다면 소수점만 얻어낼 수 있기 때문에 제대로 동작함.


그러나 float형이 담을 수 있는 정수부분 최대치를 넘어간다면 overflow로 제대로된 값이 나오지 않는다.


15. typedef char Int8;

typedef short Int16;

typedef int Int32;

'C언어 > 문제 정리' 카테고리의 다른 글

8. Exercises  (0) 2018.08.14
7. Programming Projects  (0) 2018.08.10
6. Programming Projects  (0) 2018.08.05
6. Exercises  (0) 2018.08.05
5. Programming Projects  (0) 2018.08.04