본문 바로가기
외대생의 코딩이야기

[개인학습자료] C언어 - 전처리기와 매크로의 사용 (feat. 계산기)

by Jason.IM 2020. 3. 27.
728x90

C언어 - 전처리기와 매크로를 사용해서 만든 계산기


<C언어 - 전처리기와 매크로를 사용해서 만든 계산기>

 

 

1. math.h (헤더파일)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
typedef struct calculator
{
    int num1;
    int num2;
 
}cal;
 
void menu(void);
void plus(const cal *);
void minus(const cal *);
void multiply(const cal *);
void division(const cal *);
void squared(const cal *);
void factorial(const cal *);
cs

 

2. 소스1.c (소스파일)

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include<stdio.h>
#include"math.h"
#define DEBUG
 
#define p(a,b)        (a+b)
#define m(a,b)        (a-b)
#define mu(a,b)        ((a)*(b))
#define d(a,b)        ((a)/(b))
#define r(a,b)        ((a)%(b))
#define s(a)        ((a)*(a))
 
void menu(void)
{
    puts("--------------------------------------------------------------");
    puts("1.덧셈 2.뺄셈 3.곱셈 4.나눗셈 5.제곱 6.팩토리얼 (그외.나가기)");
    puts("--------------------------------------------------------------");
}
 
void plus(const cal *x)
{
#ifdef DEBUG
 
    printf("%d+%d = %d\n", x->num1, x->num2, p(x->num1, x->num2));
 
#endif // DEBUG
}
 
void minus(const cal *x)
{
#ifdef DEBUG
 
    printf("%d-%d = %d\n", x->num1, x->num2, m(x->num1, x->num2));
 
#endif // DEBUG
}
 
void multiply(const cal *x)
{
#ifdef DEBUG
 
    printf("%d*%d = %d\n", x->num1, x->num2, mu(x->num1, x->num2));
 
#endif // DEBUG
}
 
void division(const cal *x)
{
#ifdef DEBUG
 
    printf("%d/%d = %d\n", x->num1, x->num2, d(x->num1, x->num2));
    printf("나머지 = %d\n", r(x->num1, x->num2));
 
#endif // DEBUG
}
 
void squared(const cal *x)
{
#ifdef DEBUG
 
    printf("%d의 제곱 = %d\n", x->num1, s(x->num1));
 
#endif // DEBUG
}
 
void factorial(const cal *x)
{
    int result = 1;
 
    for (int i = 1; i <= x->num1; i++)
    {
        result = result * i;
    }
 
#ifdef DEBUG
 
    printf("%d! = %d\n", x->num1, result);
 
#endif // DEBUG
}
cs

 

3. 소스.c (소스파일)

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include<stdio.h>
#include"math.h"
#include<stdlib.h>
#include<string.h>
#include<time.h>
 
int main()
{
    int menu_code;
    cal num = { NULL };
 
    menu();
 
    printf("메뉴를 선택하시오.\n");
    scanf("%d",&menu_code);
 
 
    if (menu_code > 0 && menu_code < 7)
    {
        if (menu_code == 5)
        {
            printf("제곱할 수를 입력하시오\n");
            scanf("%d"&num.num1);
        }
        else if (menu_code == 6)
        {
            printf("팩토리얼 계산을 할 수를 입력하시오\n");
            scanf("%d"&num.num1);
        }
        else
        {
            printf("첫번째 항을 입력하시오\n");
            scanf("%d"&num.num1);
            printf("두번째 항을 입력하시오\n");
            scanf("%d"&num.num2);
        }
    }
 
    switch (menu_code)
    {
    case(1) :
        plus(&num);
        break;
    case(2) :
        minus(&num);
        break;
    case(3) :
        multiply(&num);
        break;
    case(4) :
        division(&num);
        break;
    case(5) :
        squared(&num);
        break;
    case(6) :
        factorial(&num);
        break;
    default:
        break;
    }
 
    return 0;
}
cs

(본 프로그램은 저자 본인인 직접만든 프로그램임을 명시합니다.)

 

(위 포스팅에 사용된 이미지는 저작권이 해결된 이미지임을 밝힙니다.)

728x90