문제: 덧셈, 뺄셈, 곱셈, 나눗셈을 지원하는 계산기를 작성해보자.
조건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);
}
'코딩 이야기' 카테고리의 다른 글
[C언어] 아이디의 비밀번호를 확인하는 함수를 만들어보자(코딩) (0) | 2021.07.28 |
---|---|
[C언어] 주사위를 던져 각 면이 몇번 나왔는지 반환하는 함수를 만들어보자 (0) | 2021.07.28 |
[C언어] 정수 오름차순/내림차순을 구현하는 알고리즘(SORT) (0) | 2021.07.13 |
[C언어] 성적 석차 구하기 알고리즘 구현하기 (0) | 2021.07.11 |
[C언어] 형변환 그레이코드를 만드는 알고리즘 (0) | 2021.07.11 |