c 언어 반복문이 헷갈립니다.


int main(void) { int a, b;

printf("넓이 : ");
scanf("%d", &a);

printf("높이 : ");
scanf("%d", &b);

while (1) {
    if (a == 0 && b == 0)
        break;

    else if (a != 0 && b != 0) {
        printf("넓이는 %d, 길이는 %d 입니다", a * b, 2 * a + 2 * b);
        continue;
    } else {

    }
}
return 0;

}

여기서 넓이와 높이를 묻는 질문을 계속 반복하고 0 0 을 입력하면 프로그렘이 종료 되도록 하고 싶습니다만 어디를 어떠헥 고쳐야 할까요?

  • 2018년 01월 11일에 작성됨

조회수 291


Hashcode banner summercoding

1 답변


기본적으로 while에 조건문을 넣는 방법이 있어요.

while은 안의 조건문이 참일 경우에 돌아가고 while(1) C언어에서 0이 아닌 값은 true로 표현하고 있어서입니다.

그러므로 아래처럼 while(!(a == 0 && b == 0))로 조건을 하면 a와 b가 모두 0이 아닐때까지 반복하라. 가 되겠죠.

#include <stdio.h>

int main(void) {
    int a, b;

    printf("넓이 : ");
    scanf("%d", &a);

    printf("높이 : ");
    scanf("%d", &b);

    while (!(a == 0 && b == 0)) {
        printf("넓이는 %d, 길이는 %d 입니다\n", a * b, 2 * a + 2 * b);

        printf("넓이 : ");
        scanf("%d", &a);

        printf("높이 : ");
        scanf("%d", &b);
    }
    return 0;
}

아니면 break;를 이용해서 loop를 빠져나올수도 있습니다.

아래와 같이 짜면 간결하게 입력을 반복받으면서 a와 b가 0일 경우 탈출 할 수 있을 것 같습니다.

#include <stdio.h>

int main(void) {
    int a, b;

    while (1) {
        printf("넓이 : ");
        scanf("%d", &a);

        printf("높이 : ");
        scanf("%d", &b);

        if (a == 0 && b == 0)
            break;

        printf("넓이는 %d, 길이는 %d 입니다\n", a * b, 2 * a + 2 * b);
    }

    return 0;

}
  • 2018년 01월 11일에 작성됨
    내가 아는 것을 널리 알리고 싶습니다.

  • 자세한 답변 감사드립니다 !!!    문관   2018.1.12 04:09     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close