안녕하세요 길벗수험서 운영팀입니다.
배열 st는 널값을 포함하여 총 9자리 입니다.
strlen(st)를 하게 되면 9를 반환하게 되죠.
이때 strlen(st)를 받은 n을 1 감산하게 되면 8이되고,
for문을 통해 0부터 n미만 즉, k는 0~7까지 반복해야 하죠.
근데 여기서 문제는 최대값을 지정하는 n이 ⑩에서 계속 감산된다는 것입니다.
처음에는 7까지 반복해야 했지만, 다음에는 6, 5, 4로 줄어들면서 결국 중간값에서 멈추게 되죠.
결과적으로 for문은 0부터 3까지는 4회만 회전하고 종료하게 됩니다.
행복한 하루되세요 :)
-
관리자2019-05-28 11:33:38
안녕하세요 길벗수험서 운영팀입니다.
배열 st는 널값을 포함하여 총 9자리 입니다.
strlen(st)를 하게 되면 9를 반환하게 되죠.
이때 strlen(st)를 받은 n을 1 감산하게 되면 8이되고,
for문을 통해 0부터 n미만 즉, k는 0~7까지 반복해야 하죠.
근데 여기서 문제는 최대값을 지정하는 n이 ⑩에서 계속 감산된다는 것입니다.
처음에는 7까지 반복해야 했지만, 다음에는 6, 5, 4로 줄어들면서 결국 중간값에서 멈추게 되죠.
결과적으로 for문은 0부터 3까지는 4회만 회전하고 종료하게 됩니다.
행복한 하루되세요 :)
-
관리자2019-05-29 11:29:17
안녕하세요 길벗수험서 운영팀입니다.
혼동을 드려 사과드립니다.
st의 전체 문자 길이는 9, 널값을 포함한 전체 길이는 0~9 로 총 10
strlen으로 반환되는 값은 9입니다.
5번에서 n--를 수행하면, 다음 for문은
for(k=0; k<8; k++) 이렇게 됩니다.
다만 디버깅표를 작성해보시면 아시겠으나
10번에에서 해당 for문의 최대값을 계속 감소시킵니다.(n--)
이를 고려하면
1회전 때는 for(k=0; k<8; k++) 이었으나 (k는 0)
2회전 때는 조건식이 k<7로 바뀌고, (k는 1)
3회전 때는 조건식이 k<6로 바뀌고, (k는 2)
4회전 때는 조건식이 k<5로 바뀌고, (k는 3)
5회전 때는 k가 4인 상태에서 k<4 조건식을 만나 거짓이 8~10번 코드를 수행하지 않고 for문을 빠져나가게 되죠.
즉, for문에서 k는 0부터 3까지 수행되며, st[0]~[3]을 st[8]~st[5]와 교환하는 작업을 수행하게 되죠.
행복한 하루되세요 :)
-
*2019-05-28 21:50:41
문제 설명에서는 널 값을 제외한 9의 길이가 저장된다고 되있습니다.
C언어에 strlen 함수는 널값을 제외한 모든 문자열(띄어쓰기 포함) 9개요
지금 설명하시는거랑 틀리네요 알기쉽게 좀 설명 부탁드립니다