본문 바로가기
C

[C언어] 함수 - 계산기

by stdlib.h 2016. 3. 28.

이 문제는 사용자가 피연산자 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