앞선 포스트 처럼 반복문은

-조건에 맞는동안 계속 반복

-횟수가 정해진 반복

이 2가지로 나눌 수 있다.

 

조건에 맞는 동안 계속 반복

예제1] -1이 입력될때까지 더한다 

=>0이상의 수만 더한다.

 

흐름도

이 흐름도에서 -1을 입력하게 된다면 빠져나오긴 하지만 한가지 문제가 생긴다. sum 단계에서 -1을 입력함과 동시에 빠져나오기 전, -1을 더하고 빠져나오게 된다.

흐름도의 문제점

이를 수정할 수 있는 방법은 무엇일까? 방법은 간단하다. 다시 -1을 빼주면 된다.

흐름도 수정본

#include <stdio.h>

int main()
{
    int sum=0;
    int input=0;
    while(input>-1){
        scanf("%d",&input);
        sum+=input;
    }
    sum-=input;
    printf("sum= %d\n",sum);
    return 0;
}

예제2] 사용자에게 계속 무언가를 할 것인지 물어보는 반복

흐름도

#include <stdio.h>
void sum_input(void){
    int sum=0;
    int input=0;
    while(input>-1){
        scanf("%d",&input);
        sum+=input;
    }
    sum-=input;
    printf("sum=%d\n",sum);
    return 0;
}


int main()
{
    int sum,cont,input;
    cont=1;
    sum,input=0;
    
    while(cont==1){
        scanf("%d",&input);
        sum+=input;
        printf("계속 더하겠습니까?(예:1, 아니오:0)");
        scanf("%d",&cont);
    }
    printf("sum=%d\n",sum);
    return 0;
}

do-while문 사용

조건에 맞는동안 계속 반복(조건검사 전 무조건 한 번은 수행)

do{} 부분이 무조건 한번 수행한 후 조건을 비교하여 계속 수행할 것인지 판단. 무조건 한 번은 실행한다.

 

#include <stdio.h>
void sum_input(void){
    int sum=0;
    int input=0;
    while(input>-1){
        scanf("%d",&input);
        sum+=input;
    }
    sum-=input;
    printf("sum=%d\n",sum);
    return 0;
}
void sum_input_qna(void){
    int sum,cont,input;
    cont=1;
    sum,input=0;
    
    while(cont==1){
        scanf("%d",&input);
        sum+=input;
        printf("계속 더하시겠습니까?(예:1, 아니오:0)");
        scanf("%d",&cont);
    }
    printf("sum=%d\n",sum);
    return 0;
}

int main()
{
    int menu;
    do{
        printf("메뉴를 입력하세요.: ");
        scanf("%d",&menu);
        if(menu!=1&&menu!=2) printf("1,2중에 입력하세요.\n");
    }while(menu!=1 &&menu!=2);
    return 0;
}

 

'Computer engineering > C' 카테고리의 다른 글

반복문-for  (0) 2021.05.06
반복문-While(3)  (0) 2021.05.03
반복문-While(1)  (0) 2021.05.02
If-else 조건문  (0) 2021.04.21
If 조건문  (0) 2021.04.11

+ Recent posts