문제 설명
교재의 코드를 그대로 사용하면 안됨(채점을 위하여 get_key 함수 변경됨)
아래 코드 복사하여 fa 배열만 선언할 것
#include <stdio.h>
#include <stdlib.h>
int add(int a, int b)
{
return a+b;
}
int sub(int a, int b)
{
return a-b;
}
int mul(int a, int b)
{
return a*b;
}
int get_key(void)
{
static int r = 0;
int ret = r;
r = (r + 1) % 3;
return ret;
}
fa[3] = {add, sub, mul};
int op(int a, int b)
{
return fa[get_key()](a,b);
}
void main(void)
{
printf("%d\n", op(3, 4));
printf("%d\n", op(3, 4));
printf("%d\n", op(3, 4));
printf("%d\n", op(3, 4));
printf("%d\n", op(3, 4));
printf("%d\n", op(3, 4));
printf("%d\n", op(3, 4));
}
출력 예시
7
-1
12
7
-1
12
7
정답 코드
#include <stdio.h>
#include <stdlib.h>
int add(int a, int b)
{
return a+b;
}
int sub(int a, int b)
{
return a-b;
}
int mul(int a, int b)
{
return a*b;
}
int get_key(void)
{
static int r = 0;
int ret = r;
r = (r + 1) % 3;
return ret;
}
int (*fa[3])(int a, int b) = {add, sub, mul};
int op(int a, int b)
{
return fa[get_key()](a,b);
}
void main(void)
{
printf("%d\n", op(3, 4));
printf("%d\n", op(3, 4));
printf("%d\n", op(3, 4));
printf("%d\n", op(3, 4));
printf("%d\n", op(3, 4));
printf("%d\n", op(3, 4));
printf("%d\n", op(3, 4));
}
메모
printf 내부의 \n 습관화 필요