93. 함수 포인터를 멤버로 가진 구조체 배열

다음 C 프로그램의 실행 결과를 쓰시오.

1#include <stdio.h>
2
3struct Op {
4 char sym;
5 int (*fn)(int, int);
6};
7
8int add(int a, int b) { return a + b; }
9int sub(int a, int b) { return a - b; }
10int mul(int a, int b) { return a * b; }
11int mod(int a, int b) { return a % b; }
12
13struct Op *find(struct Op *list, int n, char c) {
14 for (int i = 0; i < n; i++) {
15 if (list[i].sym == c) return &list[i];
16 }
17 return NULL;
18}
19
20int main() {
21 struct Op table[4] = {{'+', add}, {'-', sub}, {'*', mul}, {'%', mod}};
22 char plan[] = "*%-+";
23 int v = 9;
24 for (int i = 0; plan[i] != '\0'; i++) {
25 struct Op *op = find(table, 4, plan[i]);
26 v = op->fn(v, i + 4);
27 printf("%c %d\n", op->sym, v);
28 }
29 table[0].fn = table[2].fn;
30 printf("%d\n", table[0].fn(3, 4) + find(table, 4, '-')->fn(10, 4));
31 return 0;
32}

해설을 먼저 보면 이후 정답 시 점수가 50%만 반영됩니다.