Taek
4. Exercises 본문
1. a) 1 2
b) 0
c) 동일한 계산순서를 가질 경우엔 왼쪽부터가 기준이다.
17 % 9 / 8이고 다시 8 / 8이니 정수형 출력은 1이 된다.
d) 6 % 4 / 3으로 변하고 다시 1/3으로 바뀌어 0이 출력된다.
2. 같은 값이 된다.
단, i와 j가 양수라는 가정하에 unary 연산자가 적용되어 -로 바뀌니 같은 것이지, 기본적으로 산수와 같다.
3. /와 % 연산자는 C89와 C99가 약간 다르다.
C89는 /연산에서 피연산자 중 하나가 음수값이면 결과값은 반올림된다.
%연산에서 피연산자 둘 다가 음수값이면 OS에 따라서 결과값이 바뀐다.(implementation-defined)
C99는 / 연산에서 결과값이 항상 0으로 잘리게 된다.
%연산에서 i % j 는 i와 같은 부호로 남는 값이 반환된다.
a) 1
b) -2
c) -2
d) 2
4. a) 1
b) -1
c) -1
d) 1
5. a) 3
b) -3이나 2
c) 3이나 -2
d) -3이나 2
C89의 나머지 연산자 공식은 i % j = ( i - ( i / j * j) )이다.
ex) b)는 -8 / 5 = ( -8 - (-8/5*5)) = -8 - ( -10) = 2
6. a) 3
b) -3
c) 3
d) -3
7. 결과값 자체는 같이 나올 수 있다.
다만, total값 끝이 0으로 나눠지는 경우, 오류 체크를 위해 존재하는 12번째 숫자와 일치하지 않는 경우가 발생한다.
예를 들어, total이 90이라 치면
첫 번째 알고리즘) 9 - ( ( 90-1 ) % 10 ) = 0
두 번째 알고리즘) 10 - ( ( 90 ) % 10 ) = 10
따라서 두 숫자가 나오게 되어 오류가 발생하게 된다.
8. 알고리즘에 따라 계산해보자.
total = 90 ) ( 10 - (0) ) %10 = 0으로 같다.
total = 88 ) ( 10 - (8) ) % 10 = 2.
원래 알고리즘) 9 - ( (87) % 10 ) = 2
등... 여러 번 해봤을 경우에 같다.
9. a) 출력은 '63 8'이다.
할당 연산자 오른쪽부터 계산한 뒤 할당하기 때문에 정리하면 ( i *= (j + 1) )이라고 볼 수 있다.
b) i += j += k를 순서대로 계산하기 위해선 오른쪽부터 정리해야 한다.
j += k 에 의해 j는 2, k는 1
나머지 i += j는 i += 2가 되서 3이 된다.
따라서 '3 2 1'이 출력된다.
c) b)와 계산 방식이 같다.
j -= k에 의해 j는 -1
i -= j에 의해 i는 2가 된다.
따라서 출력은 '2 -1 3'이 된다.
d) b, c 계산 방식과 같다.
출력은 '0 0 0'
10. a) i += i 에 의해 i는 12
j는 i를 할당하니 12
따라서 출력은 '12 12'가 된다.
b) 3 4
c) i는 정수형 변수라 2.5가 2로 바뀌어 할당된다.
따라서 출력은 '2 8'이다.
d) 6 9'
11. a) i++는 i를 불러온(fetch) 뒤에 증가시킨다.
따라서 출력은 '0 2'가 된다.
b) ++j는 j를 증가시킨 뒤 불러온다.
따라서 출력은 '4 11 6'이다.
c) 0 8 7
d) 3 4 5 4
12. a) 6 16
b) 6 -7
c) 6 23
d) 6 20
13. ++i와 ++i는 풀어보면 i += 1이지만 i값을 증가시키는 과정에서 차이가 있다.
++i는 ' i 값을 불러오기 전에 증가'시킨다.
i++는 ' i 값을 불러온 뒤에 증가'시킨다.
14. a) ( ( a * b) - (c * d) ) + e )
b) ( ( ( a / b) % c) / d )
c) ( ( ( ( -a) - b ) + c ) - (+d) )
d) ( ( ( a * (-b) ) / c ) - d )
15. i = 1, j = 2가 초기값이다.
a) i = 3
b) i = 0, j = 2
c) i = 1, j =2
d) i = 1, j = 3
'C언어 > 문제 정리' 카테고리의 다른 글
5. Exercises (0) | 2018.07.12 |
---|---|
4. Programming Projects (0) | 2018.07.12 |
3. Programming Projects (0) | 2018.07.11 |
3. Exercise (0) | 2018.07.03 |
2. Programming Projects (0) | 2018.07.02 |