본문 바로가기

C\C++

do_while 연습

개요

문제풀이
1) 작업선택 : 구구단(1), 누적합계(2), 종료(3)
2) 구구단(1) 선택시 입력 받은 단수에 맞는 구구단 출력
3) 누적합계(2) 선택시 1 부터 입력 받은 값까지의 누적합계출력
4) 종료(3) 선택시 프로그램 종료
5) 작업선댁 및 구구단, 누적합계 모두 반복 입력 동작

목표

작업 선택 : 구구단(1), 누적합계(2), 종료(3) = 4
1번에서 3번을 선택하세요!
작업 선택 : 구구단(1), 누적합계(2), 종료(3) = 1
단(2~9)을 입력하세요 = 12
2~9사이를 입력하세요!
단(2~9)을 입력하세요 = 3
3 * 0 = 0
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27

다시 하시겠습니까(Y/N) ? = n //구구단을 다시할거냐?
작업 선택 : 구구단(1), 누적합계(2), 종료(3) = 2
누적합계를 원하는 숫자를 입력하시오 = 10
10 까지의 누적 합계는 55 입니다.
다시 하시겠습니까(Y/N) ? = y //누적을 다시할거냐?
누적합계를 원하는 숫자를 입력하시오 = 100
100 까지의 누적 합계는 5050 입니다.
다시 하시겠습니까(Y/N) ? = n// 누적을 다시할거냐?
작업 선택 : 구구단(1), 누적합계(2), 종료(3) = 3

Code

#include<stdio.h>

int main(void)
{
	char rep_d,rep_s;
	int sel = 0, sel_dan = 0, sel_num = 0, i_num = 0, sum_num, dan_re, 
    dan_err, sum_re, sum_err, sel_dan_err;

	do
	{
		printf("작업 선택 : 구구단(1), 누적합계(2), 종료(3) = ");
		//작업을 선택할 sel 입력
        scanf_s("%d", &sel);	
		//입력이 1일 때,구구단 작업 시작
        if (sel == 1)			
		{
			do
			{
				do
				{
					printf("단수를 입력하세요 = ");
                    //단수 입력
					scanf_s("%d", &sel_dan);		
						//범위 외 숫자 입력시 출력 할 Error
						if (sel_dan < 2 || sel_dan>9) 
                        { printf("2~9사이의 값을 입력하세요\n"); sel_dan_err = 1; }
						else sel_dan_err = 0;
				} while (sel_dan_err);
				for (int i = 0; i <= 9; i++)	//구구단 출력
				{
					printf("%d X %d = %d\n", sel_dan, i, sel_dan * i);
				}
				do {
					printf("\n구구단을 다시 시작하시겠습니까?(y/n) : ");
					//구구단 재시작 입력
                    scanf_s("\n%c", &rep_d, (unsigned)sizeof(rep_d) + 1);				
						//n을 입력 하면 구구단 끝
                        if (rep_d == 'n' || rep_d == 'N' ) 
                        {dan_re = 0;	dan_err = 0;}	
						//y를 입력 하면 단수 입력으로 이동
                        else if (rep_d=='y' || rep_d=='Y') 
                        {dan_re = 1;	dan_err = 0;}	
						else 
                        {printf("잘못된 입력입니다.\n");dan_err = 1;}				
				} while (dan_err);

			} while (dan_re);
		}
		else if (sel == 2)		//입력이 2일 때, 누적합 시작
		{
			do
			{
				sum_num = 0;
				printf("누적합계를 원하는 숫자를 입력하시오. = ");
				//누적합을 할 숫자입력
                scanf_s("%d", &sel_num);					
				//누적합 시작
                for (i_num = 0; i_num < sel_num; i_num++)	
				{
					sum_num += i_num;			
				}
				//누적합 출력
                printf("%d 까지의 누적 합계는 %d 입니다.\n", i_num, sum_num);	
				do {
				//누적합 재시작 입력
                printf("\n누적합을 다시 시작하시겠습니까?(y/n) : ");						
				scanf_s("\n%c", &rep_s, (unsigned)sizeof(rep_s) + 1);
					//n을 입력하면 누적합 끝
                    if (rep_s == 'n' || rep_s == 'N') 
                    { sum_re = 0;	sum_err = 0; }			
					//y를 입력하면 누적합 숫자 입력으로 이동
                    else if (rep_s == 'y' || rep_s == 'Y') 
                    { sum_re = 1;	sum_err = 0; }	
					else 
                    { printf("잘못된 입력입니다.\n"); sum_err = 1; }
				} while (sum_err);
			} while (sum_re);
		}
		else { printf("1번에서 3번을 선택하세요.\n"); }
		putchar('\n');
	} while(sel !=3);		//작업선택이 3이면 종료
	sel == 3 ? printf("작업을 종료합니다.\n") : putchar('\r');

	return 0;
}

Output

'C\C++' 카테고리의 다른 글

2D Array Sum  (0) 2022.02.14
string ex01  (0) 2022.02.14
For문 중첩  (0) 2022.02.10
IF문 예제 3  (0) 2022.02.10
IF문 예제 2  (0) 2022.02.10