c언어 do ~while문 간단한 질문입니다.

조회수 441회

문제 0이 입력될 때까지 계속 수행되는 프로그램으로 0이 아닌 정수값(n)에 대해 3으로 나머지 연산한 결과를 출력하시오

입니다. 그래서

#include <stdio.h>
int main()
{
    int n;
    do
    {
    scanf("%d",&n);
        if(!n)
            printf("%d % 3 = %d \n", n, n%3);
    } while (n!=0)
    return 0;
}

라고 우선 만들었습니다.

그런데 여기서 전 정수값(n)에 두 가지 조건을 넣으려고 합니다. 우선 n은 5로 지정, n은 >0 를 입력하고 싶습니다.(여기 문제에선 의미는 없겠지만 while문에 두 가지 조건을 넣으려면 어떻게 해야하는지 궁금해서 조건을 우선 넣었습니다.). 그리고 아래 반복문이 수행될 때 마다 1씩 줄어들게끔 짜려고 합니다.

#include <stdio.h>
int main()
{
    int n=5;
    do
    {
    scanf("%d",&n);
        if(!n)
            printf("%d % 3 = %d \n", n, n%3);
    } while (n!=0, n>0)
    n--;
    return 0;
}

제 코드에 어떤 오류가 있는지 봐주실 수 있을까요? 감사합니다

1 답변

  • while (n!=0, n>0)

    이거는 일단 문법이 맞지 않습니다. 다음이 문법 맞는 조건절일 겁니다.

    while (n!=0 && n>0)

    그나마도 잘 생각해 보시면 n > 0일 때 n != 0은 항상 참입니다. 그러니 다음만 쓰시면 충분합니다.

    while (n > 0)

    그리고

    반복문이 수행될 때 마다 1씩 줄어들게끔

    하시려면 아무래도 n--;do { ... } 안에서 실행되어야 할 것입니다. 그 바깥에서 실행되는 게 아니라요.

    이 정도만 반영해 보시면 일단 감은 오실 겁니다. 나머지는 행운을 빕니다.

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

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

(ಠ_ಠ)
(ಠ‿ಠ)