C언어/참고서: C언어 콘서트

C언어 23차시 do-while문, 연습문제

Olivia-BlackCherry 2023. 3. 25. 21:10

목차

    1. do-while문

    do-while문은 while문과 원리는 비슷하나, 반복 조건이 루프의 끝에 있다는 것이 차이다.

    그렇기 때문에

    do-while에서는 조건이 거짓이라도적어도 한번은 실행된다.

    (while문에서는 조건이 거짓이라면 문장들이 아예 실행되지 않는다.)

    do {
        문장들;
    } while(조건식);

     

    do-while 문은 데이터를 처리하기 전에 사용자로부터 입력 데이터를 받아야 하는 경우에 자주 쓰인다. 

    사용자로부터 유효한 입력을 받기 전에 적어도 한번은 메뉴를 나타내야 하는 경우이다.

     

     

    2. 연습문제 -입력 처리하는 예시

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    #include <stdlib.h>
    #include <windows.h>
    
    int main(void)
    {
    	int i=0;
    	do {
    		printf(" 파일열기-1\n 파일저장하기-2\n 종료-3\n");
    		scanf("%d", &i);
    	} while (i < 0 || i>3);  //정상적인 값이 아니라면 계속 반복 
    	printf("선택한 메뉴 %d", i);
    	return 0;
    }

     

     

    3. 연습문제- 컴퓨터와 숫자 맞추기 대결하기

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    #include <stdlib.h>
    #include <time.h>
    
    int main(void)
    {
    	int user, count;
    	int computer;
    	srand(time(NULL));
    	computer = rand() % 100+1;
    	count = 0;
    	user = 0;
    
    	// 사용자값과 컴퓨터값이 다른 경우 반복하기
    	while (user != computer) {
    	//사용자 입력값 받기
    		do {
    			count += 1;
    			printf(" 1-100 사이의 숫자를 입력하세요 \n");
    			scanf("%d", &user);
    		} while (user < 1 || user>100);
    		printf(" %d번째 선택한 값은 %d입니다.\n", count, user);
    
    	//컴퓨터 값과 사용자 값 비교하기
    		if (user > computer) {
    			printf("입력한 값이 컴퓨터 값보다 큽니다.\n\n");
    		}
    		else if (user < computer) {
    			printf("입력한 값이 컴퓨터 값보다 작습니다.\n\n");
    		}
    		else {
    			printf("정답입니다.\n\n");
    		}
    	}
    	
    	return 0;
    }

     

     

    4. 연습문제 - 정수의 자리수 구하기

     

    - while 구문을 활용한 예

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    
    int main(void)
    {
    	int number, check, i;	
    	check = 1;
    	i = 0;
    	
    	printf("정수를 입력하세요\n");
    	scanf("%d", &number);
    
    	while (number / check != 0) {
    		check *= 10;
    		i += 1;
    	}
    	printf("%d 자리수입니다.\n", i);
    	return 0;
    }

     

    -do while 구문을 활용한 예

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    
    int main(void)
    {
    	long long num;
    	int i = 0;
    
    	print("정수를 입력하세요\n");
    	scanf("% lld", &num);
    
    	do {
    		i += 1;
    		num /= 10; //정수 나눗셈
    	} while (num != 0);
    
    	printf("%d 자리수입니다.\n", i);
    	return 0;
    }