본문 바로가기

C

[C언어] 실습: 멀티 프로그램 만들기(최댓값, 사이합, 수나열, 계산기)

반응형

멀티 프로그램 만들기(최댓값, 사이합, 수나열, 계산기)


입력형식 처리조건

 == 멀티프로그램 ==
 1. 최댓값
 2. 사이합
 3. 수나열
 4. 계산기
 5. 종 료
 =============
 선택:

 1. 최댓값은 세 개의 정수를 입력받아 가장 큰 수를 출력한다.
 2. 사이합은 두 개의 정수를 입력받아 두 수 사이의 자연수 합을 계산한다.
 3. 수나열은 세 개의 정수를 입력받아 값이 큰 순서대로 출력한다.
 4. 계산기는 두 개의 정수와 하나의 연산자를 입력받아 계산한다.
 5. 주어진 연산기호 이외의 값이 들어오면 다시 입력받는다.
 6. 연산자가 '/'이고 두 번째 수가 '0'이면 두 번째 수를 다시 입력받는다.

 

#include<stdio.h>

int main(){

   int num1, num2, num3, tmp = 0;   // tmp는 임시변수이다.
   char op;
   int menu = 0;   // 사용자가 선택한 메뉴값을 저장하는 변수이다.

   while(1){
      printf("\n== 멀티프로그램 ==\n");
      printf("1. 최댓값\n");
      printf("2. 사이합\n");
      printf("3. 수나열\n");
      printf("4. 계산기\n");
      printf("5. 종  료\n");
      printf("=================\n");
      printf("선택 : ");
      scanf("%d", &menu);

      if(menu == 1){   // 최댓값
         printf("첫 번째 수 : ");
         scanf("%d", &num1);
         printf("두 번째 수 : ");
         scanf("%d", &num2);
         printf("세 번째 수 : ");
         scanf("%d", &num3);

         tmp = 0;
         if(num2 > num1 && num2 > num3){
            tmp = num1;
            num1 = num2;
            num2 = tmp;
         }
         else if(num3 > num1 && num3 > num2){
            tmp = num1;
            num1 = num3;
            num3 = tmp;
         }

         printf("최댓값 : %d\n", num1);
      }
      else if(menu == 2){   // 사이합
         printf("2개의 수 입력 [수1 수2] : ");
         scanf("%d %d", &num1, &num2);

         tmp = 0;
         if(num2 > num1){                       // num2가 큰 수이면,
            for(int i = num1; i <= num2; i++)   // num1부터 num2사이 값들의 합을 구한다.
               tmp += i;
         } else{
            for(int i = num2; i <= num1; i++)   // num1이 큰 수이면, num2부터 num1사이 값들의 합을 구한다.
               tmp += i;
         }

         printf("사이합 : %d\n", tmp);
      }
      else if(menu == 3){   // 수나열
         printf("숫자 3개 입력 [수1, 수2, 수3] : ");
         scanf("%d, %d, %d", &num1, &num2, &num3);   // ""안의 양식대로 입력된 변수의 값들이 구분된다.

         tmp = 0;
         if(num2 > num1 && num2 > num3){   // num2가 제일 큰 수이면,
            tmp = num1;                    // num1에 num2값을, num2에 num1값을 저장한다.
            num1 = num2;
            num2 = tmp;
         } else if(num3 > num1 && num3 > num2){   // num3이 제일 큰 수이면,
            tmp = num1;                           // num1에 num3값을, num3에 num1값을 저장한다.
            num1 = num3;
            num3 = tmp;
         }
         if(num2 < num3){   // num2와 num3의 값을 비교하여 큰 수 를 num2에 저장한다.
            tmp = num2;
            num2 = num3;
            num3 = tmp;
         }

         printf("%d >= %d >= %d\n", num1, num2, num3);
      }
      else if(menu == 4){   // 계산기
         printf("첫 번째 수 : ");
         scanf("%d", &num1);
         getchar();   // '첫 번째 수' 입력 값이 num1에 저장된 후, 'Enter'는 getchar()에 저장된다.
         do{
         printf("연산자(+, -, *, /) : ");
         scanf(" %c", &op);   // '%c'앞에 'space'를 주면, 앞의 입력값을 입력하고 누른 'Enter'가 'space'에 먹히게 된다.
         } while(op != '+' && op != '-' && op != '*' && op != '/');
         // op의 값이 +, -, *, /, %가 아니면 do로 돌아가 다시 입력받는다.
         do{
         printf("두 번째 수 : ");
         scanf("%d", &num2);
         } while(op == '/' && num2 == 0);
         // op가 '/'이고 num2값이 0이면 do로 돌아가 다시 입력받는다.

         tmp = 0;
         switch(op){
         case '+': tmp = num1 + num2; break;
         case '-': tmp = num1 - num2; break;
         case '*': tmp = num1 * num2; break;
         case '/': tmp = num1 / num2; break;
         }

         printf("%d %c %d = %d\n", num1, op, num2, tmp);
      }
      else if(menu == 5){   // 종료
         printf("종료하겠습니다.\n");
         return 0;   // 프로그램을 종료한다.
      }
      else
         printf("메뉴의 선택이 올바르지 않습니다.\n");
   }

   return 0;
}

 

▲ 1. 최댓값

 

▲ 2. 사이합

 

▲ 3. 수나열

 

▲ 4. 계산기

 

▲ 5. 종료

반응형