이 문제는 사용자가 피연산자 1과 연산자, 피연산자 2 를 입력했을때,
연산자의 값에 따라 결과를 출력하는 문제이다.
이를 함수로 구현하면, 피연산자 1과 연산자, 피연산자 2를 함수에 전달인자로 넘겨주거나,
if 문 또는 switch 으로 연산자를 구분하여 연산자에따라 다른 함수를 호출할 수도 있다.
두번째 방식으로 if문으로 연산자를 구분하여 각기 다른 함수를 호출하면 다음과 같이 나올 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #include <stdio.h> int plus(int a, int c); int minus(int a, int c); int multiply(int a, int c); double divide(int a, int c); int main(void) { int a, c; char b; printf("계산할것을 입력하십시오.\n"); scanf("%d%c%d", &a, &b, &c); if(b == '+') { printf("%d + %d = %d\n", a, c, plus(a,c)); } else if(b == '-') { printf("%d - %d = %d\n", a, c, minus(a,c)); } else if(b == '*') { printf("%d * %d = %d\n", a, c, multiply(a,c)); } else if(b == '/') { printf("%d / %d = %lf\n", a, c, divide(a,c)); } else printf("오류\n"); } int plus(int a, int c) { return a+c; } int minus(int a, int c) { return a-c; } int multiply(int a, int c) { return a*c; } double divide(int a, int c) { return (double)a/(double)c; } | cs |
연산자를 b 에 입력하고, b 와 연산자들의 아스키코드값을 비교하여
연산자에 맞는 함수를 호출한다.
마지막 divide 만 double 형으로 반환하는 이유는 소수점까지 구하기 위해서이다.
'C' 카테고리의 다른 글
[C언어]재귀 - 각 자리수의 합 (0) | 2016.03.28 |
---|---|
[c언어] 재귀 - 팩토리얼 (0) | 2016.03.28 |
2의n승 (0) | 2016.03.28 |
다차원배열과제 (0) | 2016.03.28 |
과제 (0) | 2016.03.28 |