책 내용 질문하기
모의고사 3회 18번
도서
2021 시나공 정보처리기사 실기
페이지
97
조회수
237
작성일
2021-10-01
작성자
탈퇴*원
첨부파일

#include <stdio.h>

 

void func(int, int);

int main() {

    int p, q;

    p = 10;

    q = p++ > 10 ? p + 3 : p - 3;

    func(p, q);

}

void func(int x, int y) {

    if (x > y)

        while (x > 0) {

            printf("%d ", x);

            x = x / 2;

            }

 

이하 생략

 

 

 

while (x > 0) 에서

 

x를 10진수로 출력하는데

 

답안은 11 5 2 1  입니다  

 

x가 2일때 1로 출력되고

여기에서 나온 x값 1이 x = x / 2; 식에서 0까지 나오는데

답안에 0 이 포함되지 않는 것은 x > 0 조건에 맞지않아서 인가요??

실제 시험에 나온다면 다 풀고도 실수 할 것 같습니다...


그렇다고 문제에서 조건이 while (x >=0) 라면

 0 이 무한출력되더라고요.....
답변
2021-10-04 11:10:44

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

 

...? 제대로 이해하신 것 같은데 어떤 부분에서 혼동이 오신건가요?

 

기본적으로 절차형 프로그래밍 언어인 C에서는 반드시 순서대로 코드가 수행된다는 점만 기억해두세요.

 

x가 1일 때 print문으로 출력 -> 2로 나누어져 x가 0이됨 -> while(x>0)으로 돌아가 조건이 맞지 않아 빠져나옴

이라는 순서로 while문이 종료되게 되는 것이죠.

 

행복한 하루되세요 :)

  • 관리자
    2021-10-04 11:10:44

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

     

    ...? 제대로 이해하신 것 같은데 어떤 부분에서 혼동이 오신건가요?

     

    기본적으로 절차형 프로그래밍 언어인 C에서는 반드시 순서대로 코드가 수행된다는 점만 기억해두세요.

     

    x가 1일 때 print문으로 출력 -> 2로 나누어져 x가 0이됨 -> while(x>0)으로 돌아가 조건이 맞지 않아 빠져나옴

    이라는 순서로 while문이 종료되게 되는 것이죠.

     

    행복한 하루되세요 :)

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