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

조회수 1838회

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 답변

  • 기본적으로 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;
    
    }
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)