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 을 입력하면 프로그렘이 종료 되도록 하고 싶습니다만 어디를 어떠헥 고쳐야 할까요?

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    기본적으로 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.1.12 04:09

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.