: 질문 1. 11번행에서 row의 초기값은 8에 해당하는건지요?
네.. draw_box(8, 35); 를 호출하였으므로 row의 초기값은 8로 전달되게 됩니다.
: 11 : for ( ; row >0 ; row --)
: 12 : {
: 13 : for ( col = column ; col > 0 ; col --)
: 14 : printf("X");
: 15 : printf("\n");
: 16 : }
위의 문장에서 row와 col의 비교 구문에서 0보다 크다는 생략도 가능합니다. 조건이 참인 경우를 따지는 것과 동일하기 때문에 아래와 같이...
for(; row; row--)
{
for(col=column; col; col--) printf("X");
printf("\n");
}
동일한 결과를 가집니다.
: 질문 2. 13번행에서 col은 column의 초기값 35를 할당받게 될텐데 그럼 35에서 1이 될때까지
: for문이 실행될것이고 그 결과로 34, 33, 32 ...... 3, 2, 1 순서로 'X'가 그려져야 하는게 아닐런지요?
화면에 X 문자가 35번 찍히게 되겠지요 35, 34, .... 1이 되는 동안...
: 질문3. 결국 직각삼각형의 형태로 우측이 점차 줄어드는 형태의 삼각형이 그려져야 하는게 아닐까해서요.
: 삼각형이 그려져야 하는데 그렇지 않은 이유는 'row' 의 값이 한 행으로만 한정되어졌기때문에
: 한줄씩만 나타나는 건가요?
: (row 에 8이 할당되었을때 col 초기값은 35, row 에 7이 할당되었을때도 col 초기값은 35...
: 이런원리때문에 삼각형이 아닌 8행 35열의 'X'자로 구성된 사각형 박스가 그려지는건가요?)
왜 우측이 줄어들까요? row만큼 수직방향으로 column만큼 수평방향으로 반복되는데,
()안에 적으신 내용처럼 row가 변한다고 해도 col의 초기값은 항상 column이기 때문에 회수가 바뀌지는 않는거죠.
삼각형이 되려면, col의 초기값인 column이 하나씩 감소해주면서 초기화 되어야 하겠죠?
삼각형을 만드시려면 for(col=column--; col; col--)로 바꾸시면 되겠죠??
화니 님이 쓰신 글 :
: 안녕하세요. 저는 Turbo C 3.0 사용자입니다.
:
: 아직 C에 대한 지식이 턱없이 부족한지라 열심히 공부하는 도중 이해가 가지 않는 부분이 있어서요.
:
: 각설하고,
:
: 1 : #include <stdio.h>
:
: 2 : void draw_box(int, int);
:
: 3 : main()
: 4 : {
: 5 : draw_box(8, 35);
:
: 6 : return 0;
: 7 : }
:
: 8 : void draw_box(int row, int column)
: 9 : {
: 10 : int col;
: 11 : for ( ; row >0 ; row --)
: 12 : {
: 13 : for ( col = column ; col > 0 ; col --)
: 14 : printf("X");
: 15 : printf("\n");
: 16 : }
: 17 : }
:
: 위 소스코드에 대한 출력은
: 가로 35 세로 8에 해당하는 상자크기가 'X'로 구성되어 나타납니다.
:
: 그런데 이해가 되지 않는 부분은 바로 11번에서 16번행 까지입니다.
:
: 질문 1. 11번행에서 row의 초기값은 8에 해당하는건지요?
:
: 질문 2. 13번행에서 col은 column의 초기값 35를 할당받게 될텐데 그럼 35에서 1이 될때까지
: for문이 실행될것이고 그 결과로 34, 33, 32 ...... 3, 2, 1 순서로 'X'가 그려져야 하는게 아닐런지요?
:
: 질문3. 결국 직각삼각형의 형태로 우측이 점차 줄어드는 형태의 삼각형이 그려져야 하는게 아닐까해서요.
: 삼각형이 그려져야 하는데 그렇지 않은 이유는 'row' 의 값이 한 행으로만 한정되어졌기때문에
: 한줄씩만 나타나는 건가요?
: (row 에 8이 할당되었을때 col 초기값은 35, row 에 7이 할당되었을때도 col 초기값은 35...
: 이런원리때문에 삼각형이 아닌 8행 35열의 'X'자로 구성된 사각형 박스가 그려지는건가요?)
:
: 알듯 모를듯...헷갈리네요. 제 궁금증을 해결해주세요~~!
: 그럼 모두들 오늘도 즐거운 하루 되셨길 바랍니다.
|