코딩 이야기

[C언어] 함수를 이용한 계산기 프로그램을 작성해보자

고주망고 2021. 7. 27. 12:17

실행 예제1
실행 예제2

문제: 덧셈, 뺄셈, 곱셈, 나눗셈을 지원하는 계산기를 작성해보자.

 

조건1: 각 연산들이 몇번씩 계산되었는지 각자의 함수에 기억하기

조건2: 정적 지역 변수를 1개 이상 사용하기

조건3: 전역 변수를 1개 이상 사용하기

조건4: swtich문을 사용하여 메인함수 최대한 깔끔하게 정리하기

 

답안:

#include <stdio.h>
int result = 0;

/*프로토 타입 선언*/
void add(int x, int y);
void minus(int x, int y);
void multiple(int x, int y);
void divide(int x, int y);

int main(void) {
    int x, y;
    char ch;

    do {
        printf("연산을 입력해주세요(x,y 둘다 0을 입력하면 종료합니다)\n");
        printf("X값을 입력해주세요");
        scanf_s("%d", &x);
        getchar(); //getchar()사용하지않으면 Enter을 사용하여서 2019 버전에서는 오류가 발생합니다
        printf("CH값을 입력해주세요");
        scanf_s("%c", &ch);
        printf("Y값을 입력해주세요");
        scanf_s("%d", &y);
        switch (ch) {
        case '+':
            add(x, y);
            printf("연산의 결과값은: %d 입니다\n\n", result);
            result = 0;
            break;
        case '-':
            minus(x, y);
            printf("연산의 결과값은: %d 입니다\n\n", result);
            result = 0;
            break;
        case '*':
            multiple(x, y);
            printf("연산의 결과값은: %d 입니다\n\n", result);
            result = 0;
            break;
        case '/':
            divide(x, y);
            printf("연산의 결과값은: %d 입니다\n\n", result);
            result = 0;
            break;
        default:
            printf("잘못된 값을 입력했습니다\n\n");
        }
    } while (x != 0 || y != 0);  //x와 y가 둘다 0일경우에만 탈출하는 do while 문
    return 0;
}

void add(int x, int y) {
    static int Addresult = 0;
    result = x + y;
    printf("덧셈은 %d번 실행되었습니다\n", ++Addresult);
}

void minus(int x, int y) {
    static int minusresult = 0;
    result = x - y;
    printf("뺄셈은 %d번 실행되었습니다\n", ++minusresult);
}

void multiple(int x, int y) {
    static int multipleresult = 0;
    result = x * y;
    printf("곱셈은 %d번 실행되었습니다\n", ++multipleresult);
}

void  divide(int x, int y) {
    static int divideresult = 0;
    result = x / y;
    printf("나눗셈은 %d번 실행되었습니다\n", ++divideresult);
 }