질문1
예제나 강의 설명에는 문자가없었는데
예제들이 다 문자로 나오니까요
잘 이해가 안갑니다.
문제3 문제4가 이해가 안되니까
120쪽에 문제 46, 49문제에서도 막히네요
비슷한 유형이라도 강의 제공되는것이없을까요?
풀이를 봐도 잘 모르겠습니다.
질문2
" i am Tom! " 이 왜 9글자인가요
질문3
124쪽 문제 52
마지막에 top-
후치연산자이지만 단독으로쓰이기때문에
Top-1아닌가요
왜 값을 출력한 후 -1하나요
질문4
다음문제 53문제에서는요
push(int i)가 어떻게 push('A')를 받을수잇나요
정수형 변수인데요
안녕하세요.
1)
안녕하세요.
numAry에는 1, 0, 0, 0, 0 이 저장되어 있습니다.
즉
numAry[0]에는 1이
numAry[1]에는 0이
numAry[2]에는 0이
numAry[3]에는 0이
numAry[4]에는 0이 저장되어 있는 것이죠.
바깥쪽 for문
j는 초기값 0을 가지고 종료값 j<5 조건에 만족하므로 안쪽 for문을 수행합니다.
안쪽 for문
i는 초기값 0을 가지고 종료값 i 다시 바깥쪽 for문 j는 증가값 ++j로 인해 1 증가되어 1이된 상태에서 종료값 j<5 조건에 만족하므로 안쪽 for문을 수행합니다. 안쪽 for문 i는 초기값 0을 가지고 종료값 i numAry[J] += numAry[i];를 수행하여 numAry[1]에 numAry[0]의 값을 누적합니다. 그러면 아래와 같이 numAry[1]의 값이 변경됩니다. numAry[0]에는 1 numAry[1]에는 1 numAry[2]에는 0 numAry[3]에는 0 numAry[4]에는 0이 저장되어 있습니다. 안쪽 for문 i는 증가값 ++i로 인해 1 증가되어 1이된 상태에서 종료값 i 다시 바깥쪽 for문 j는 증가값 ++j로 인해 1 증가되어 2가된 상태에서 종료값 j<5 조건에 만족하므로 안쪽 for문을 수행합니다. 안쪽 for문 i는 초기값 0을 가지고 종료값 i numAry[J] += numAry[i];를 수행하여 numAry[2]에 numAry[0]의 값을 누적합니다. 그러면 아래와 같이 numAry[2]의 값이 변경됩니다. numAry[0]에는 1 numAry[1]에는 1 numAry[2]에는 1 numAry[3]에는 0 numAry[4]에는 0이 저장되어 있습니다. 안쪽 for문 i는 증가값 ++i로 인해 1 증가되어 1이된 상태에서 종료값 i numAry[J] += numAry[i];를 수행하여 numAry[2]에 numAry[1]의 값을 누적합니다. 그러면 아래와 같이 numAry[2]의 값이 변경됩니다. numAry[0]에는 1 numAry[1]에는 1 numAry[2]에는 2 numAry[3]에는 0 numAry[4]에는 0이 저장되어 있습니다. 안쪽 for문 i는 증가값 ++i로 인해 1 증가되어 2가된 상태에서 종료값 i 위와 같은 과정으로 이후 과정을 계속해서 수행합니다. numAry[3]은 처음에 0이 었지만 i가 0일 때 numAry[0]의 값이 1이 누적되어 numAry[3]은 1이 됩니다. 이어서 i가 증가하여 1일 때 numAry[1]의 값이 1이 누적되어 numAry[3]은 2가 됩니다. 이어서 i가 증가하여 2일 때 numAry[2]의 값이 2가 누적되어 numAry[3]은 4가 됩니다. 이어서 i가 증가하여 3일 때 i 같은 원리로 j가 4일 때는 numAry[4]에 numAry[0]~numAry[3]까지의 값이 누적되어 i가 0일 때 numAry[4]는 1 i가 1일 때 numAry[4]는 2 i가 2일 때 numAry[4]는 4 i가 3일 때 numAry[4]는 8 이 됩니다. 그래서 결국 최종적으로 nuymAry 배열의 값은 1 1 2 4 8이 되므로 화면에는 한 줄씩 출력되어 1 1 2 4 8 이 된 것입니다 수행 과정을 469쪽 디비겅 표와 함께 이해하시면 쉽게 이해하실 수 있습니다. 2) "I am Tom!"는 중간의 공백까지 포함해서 모두 9글자 입니다. 디버깅 해설에서는 문자열을 표현하기 위해 st 배열 마지막에 \0을 넣어 표현하였지만 이는 컴퓨터 내부에서 인식하는 값으로 실제 st 배열의 길이로 산출되는 값은 저장된 문자열의 길이인 9가 됩니다. 3) top--가 단독으로 사용될 경우에는 top = top-1의 역할을 수행하지만 Stack[Top--]와 같이 다른 식이나 배열의 첨자 등에 사용될 경우는 후치연산을 수행하여 먼저 Top의 값을 사용한 후 1감소합니다. 현재 top의 값이 1이라면 Stack[1]을 먼저 수행한 후 top의 값을 1 감소하여 Stack[1]이 사용된 후 top의 값이 0이 됩니다. 4) 'A'는 문자 한 글자 A를 의미하는 것으로 컴퓨터 내부에서는 아스키 코드 값으로 처리됩니다. 그래서 정수형 변수로 값을 저장하게 되면 아스키 코드값인 65로 저장이 됩니다. 물론 내부적으로는 2진수로 변환되어 처리되는 것이구요. 또한 정수형 변수에 저장된 값 65가 다시 문자형 변수 혹은 문자형 출력 서식문자열은 %c를 만나면 문자로 변형되어 A가 출력되게 됩니다. 오늘도 즐거운 하루 되세요.
즉 j가 3일 때
-
*2017-04-12 09:49:20
안녕하세요.
1)
안녕하세요.
numAry에는 1, 0, 0, 0, 0 이 저장되어 있습니다.
즉
numAry[0]에는 1이
numAry[1]에는 0이
numAry[2]에는 0이
numAry[3]에는 0이
numAry[4]에는 0이 저장되어 있는 것이죠.
바깥쪽 for문
j는 초기값 0을 가지고 종료값 j<5 조건에 만족하므로 안쪽 for문을 수행합니다.
안쪽 for문
i는 초기값 0을 가지고 종료값 i
다시
바깥쪽 for문
j는 증가값 ++j로 인해 1 증가되어 1이된 상태에서 종료값 j<5 조건에 만족하므로 안쪽 for문을 수행합니다.
안쪽 for문
i는 초기값 0을 가지고 종료값 i
numAry[J] += numAry[i];를 수행하여
numAry[1]에 numAry[0]의 값을 누적합니다. 그러면 아래와 같이 numAry[1]의 값이 변경됩니다.
numAry[0]에는 1
numAry[1]에는 1
numAry[2]에는 0
numAry[3]에는 0
numAry[4]에는 0이 저장되어 있습니다.
안쪽 for문
i는 증가값 ++i로 인해 1 증가되어 1이된 상태에서 종료값 i
다시
바깥쪽 for문
j는 증가값 ++j로 인해 1 증가되어 2가된 상태에서 종료값 j<5 조건에 만족하므로 안쪽 for문을 수행합니다.
안쪽 for문
i는 초기값 0을 가지고 종료값 i
numAry[J] += numAry[i];를 수행하여
numAry[2]에 numAry[0]의 값을 누적합니다. 그러면 아래와 같이 numAry[2]의 값이 변경됩니다.
numAry[0]에는 1
numAry[1]에는 1
numAry[2]에는 1
numAry[3]에는 0
numAry[4]에는 0이 저장되어 있습니다.
안쪽 for문
i는 증가값 ++i로 인해 1 증가되어 1이된 상태에서 종료값 i
numAry[J] += numAry[i];를 수행하여
numAry[2]에 numAry[1]의 값을 누적합니다. 그러면 아래와 같이 numAry[2]의 값이 변경됩니다.
numAry[0]에는 1
numAry[1]에는 1
numAry[2]에는 2
numAry[3]에는 0
numAry[4]에는 0이 저장되어 있습니다.
안쪽 for문
i는 증가값 ++i로 인해 1 증가되어 2가된 상태에서 종료값 i
위와 같은 과정으로 이후 과정을 계속해서 수행합니다.
즉 j가 3일 때numAry[3]은 처음에 0이 었지만
i가 0일 때
numAry[0]의 값이 1이 누적되어 numAry[3]은 1이 됩니다.
이어서 i가 증가하여 1일 때
numAry[1]의 값이 1이 누적되어 numAry[3]은 2가 됩니다.
이어서 i가 증가하여 2일 때
numAry[2]의 값이 2가 누적되어 numAry[3]은 4가 됩니다.
이어서 i가 증가하여 3일 때 i
같은 원리로 j가 4일 때는
numAry[4]에 numAry[0]~numAry[3]까지의 값이 누적되어
i가 0일 때 numAry[4]는 1
i가 1일 때 numAry[4]는 2
i가 2일 때 numAry[4]는 4
i가 3일 때 numAry[4]는 8
이 됩니다.
그래서 결국 최종적으로 nuymAry 배열의 값은
1 1 2 4 8이 되므로 화면에는 한 줄씩 출력되어
1
1
2
4
8
이 된 것입니다
수행 과정을 469쪽 디비겅 표와 함께 이해하시면 쉽게 이해하실 수 있습니다.
2)
"I am Tom!"는 중간의 공백까지 포함해서 모두 9글자 입니다.
디버깅 해설에서는 문자열을 표현하기 위해 st 배열 마지막에 \0을 넣어 표현하였지만 이는 컴퓨터 내부에서 인식하는 값으로 실제 st 배열의 길이로 산출되는 값은 저장된 문자열의 길이인 9가 됩니다.
3)
top--가 단독으로 사용될 경우에는 top = top-1의 역할을 수행하지만
Stack[Top--]와 같이 다른 식이나 배열의 첨자 등에 사용될 경우는 후치연산을 수행하여 먼저 Top의 값을 사용한 후 1감소합니다.
현재 top의 값이 1이라면
Stack[1]을 먼저 수행한 후 top의 값을 1 감소하여 Stack[1]이 사용된 후 top의 값이 0이 됩니다.
4)
'A'는 문자 한 글자 A를 의미하는 것으로 컴퓨터 내부에서는 아스키 코드 값으로 처리됩니다.
그래서 정수형 변수로 값을 저장하게 되면 아스키 코드값인 65로 저장이 됩니다.
물론 내부적으로는 2진수로 변환되어 처리되는 것이구요.
또한 정수형 변수에 저장된 값 65가 다시 문자형 변수 혹은 문자형 출력 서식문자열은 %c를 만나면 문자로 변형되어 A가 출력되게 됩니다.
오늘도 즐거운 하루 되세요.