책 내용 질문하기
2018 정보처리기사실기 1회차 문제5번..
도서
2018 시나공 정보처리기사 실기(산업기사 포함)
페이지
조회수
476
작성일
2018-09-17
작성자
탈퇴*원
첨부파일
제가 이제 최근꺼부터 기출자료 다운받아서 풀어보려고 하는데요. 문제 5번 스택관련 c언어에서 좀 이해가 안되서요.. 어찌어찌 답을 찾긴했는데 메인함수에 있는 반복문이 도저히 이해가 안갑니다. 왜냐하면 분명 isempty로 가서 top==-1이 될 때까지 반복이 되서 들어가야되는데 while 반복문은 계속 반복되려면 (1)로 되어있어야 되는거 아닌가요..? 근데 while반복문 괄호 안에 !느낌표가 있는건 어떻게 하라는건지 이해가 안됩니다. 또!!!!!! isempty()에서 top==-1이 되기까지 왜 1의 값이 리턴된다고 디버깅에 나와있는지 모르겠어요.. top가 2일때부터 0까지 -1이 아니기 때문에 else인 0이 계속 리턴되다가 top가 -1이 되는 순간 1이 리턴 되야 하는거 아닌가요..?
답변
2018-09-18 09:35:46

안녕하세요. 길벗 수험서 운영팀입니다.

isempty로 가서 top==-1이 될 때까지 반복이 되서 들어가야되는데 while 반복문은 계속 반복되려면 (1)로 되어있어야 되는거 아닌가요..? 근데 while반복문 괄호 안에 !느낌표가 있는건 어떻게 하라는건지 이해가 안됩니다.

[답변]

main()의 while (!isempty())은 사용자 정의 함수 isempty()에서 1을 return하면 앞의 부정 연산자 !를 통해 0으로 바뀌어서 while문을 탈출하는 원리입니다.

isempty()에서 변수 top이 -1이 아닐 때는(top>-1) 0이 return되고, 부정 연산자 !를 통해 1로 바뀌게 되면 while(1)이 되어 while문 안의 구문을 반복하게 됩니다.

isempty()에서 변수 top이 -1일 때는(top==-1) 1이 return되고, 부정 연산자 !를 통해 0으로 바뀌게 되면 while(0)이 되어 while문을 벗어나게 되는 원리입니다.

isempty()에서 top==-1이 되기까지 왜 1의 값이 리턴된다고 디버깅에 나와있는지 모르겠어요.. top가 2일때부터 0까지 -1이 아니기 때문에 else인 0이 계속 리턴되다가 top가 -1이 되는 순간 1이 리턴 되야 하는거 아닌가요..?

[답변]

예, 맞습니다.

계속 0이 return되다가 top이 -1인 시점에서 1이 return됩니다.

기출 자료의 디버깅표가 잘못된 것으로 즉시 수정토록 하겠습니다.

while문에 있는 부정 연산자 !는 0은 1로, 1은 0으로 바꾼다는 점 기억하세요.

행복한 하루되세요.^^

  • *
    2018-09-18 09:35:46

    안녕하세요. 길벗 수험서 운영팀입니다.

    isempty로 가서 top==-1이 될 때까지 반복이 되서 들어가야되는데 while 반복문은 계속 반복되려면 (1)로 되어있어야 되는거 아닌가요..? 근데 while반복문 괄호 안에 !느낌표가 있는건 어떻게 하라는건지 이해가 안됩니다.

    [답변]

    main()의 while (!isempty())은 사용자 정의 함수 isempty()에서 1을 return하면 앞의 부정 연산자 !를 통해 0으로 바뀌어서 while문을 탈출하는 원리입니다.

    isempty()에서 변수 top이 -1이 아닐 때는(top>-1) 0이 return되고, 부정 연산자 !를 통해 1로 바뀌게 되면 while(1)이 되어 while문 안의 구문을 반복하게 됩니다.

    isempty()에서 변수 top이 -1일 때는(top==-1) 1이 return되고, 부정 연산자 !를 통해 0으로 바뀌게 되면 while(0)이 되어 while문을 벗어나게 되는 원리입니다.

    isempty()에서 top==-1이 되기까지 왜 1의 값이 리턴된다고 디버깅에 나와있는지 모르겠어요.. top가 2일때부터 0까지 -1이 아니기 때문에 else인 0이 계속 리턴되다가 top가 -1이 되는 순간 1이 리턴 되야 하는거 아닌가요..?

    [답변]

    예, 맞습니다.

    계속 0이 return되다가 top이 -1인 시점에서 1이 return됩니다.

    기출 자료의 디버깅표가 잘못된 것으로 즉시 수정토록 하겠습니다.

    while문에 있는 부정 연산자 !는 0은 1로, 1은 0으로 바꾼다는 점 기억하세요.

    행복한 하루되세요.^^

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.