#include <stdio.h>


/*
函数指针、函数指针数组
*/
void menu()
{
    printf("********************\n");
    printf("****1.add  2.sub****\n");
    printf("****3.mul  4.div****\n");
    printf("********************\n");
}
int add(int x, int y)
{
    return x+y;
}
int sub(int x, int y)
{
    return x-y;
}
int mul(int x, int y)
{
    return x*y;
}
int div(int x, int y)
{
    return x/y;
}
void Calc(int (*pf)(int, int))
{
    int x = 0;
    int y = 0;
    printf("输入两个数");
    scanf("%d %d", &x, &y);
    printf("result = %d", pf(x, y));
}
int main()
{
    int input = 0;
    do{
        menu();
        switch(input)
        {
        case 1:
            Calc(add);
            break;
        case 2:
            Calc(sub);
            break;
        case 3:
            Calc(mul);
            break;
        case 4:
            Calc(div);
            break;
        case 0:
            break;
        default:
            printf("错了,重来");
            break;
        }
    } while(input);
    return 0;
}

// int main()
// {
//     // int (*)(int, int);//函数指针类型
//     // int (*pfArr[10])(int, int) = {0};//函数指针数组,pfArr就是函数指针数组
//     int input = 0;
//     do {
//         int (* pfArr[5])(int, int) = {NULL,add,sub,mul,div};
//         int x = 0;
//         int y = 0;
//         int ret = 0;
//         printf("请选择:");
//         scanf("%d", &input);
//         printf("输入两个数");
//         scanf("%d %d", &x, &y);
//         ret = (pfArr[input])(x, y);
//         printf("结果=%d\n", ret);
//     } while (input);
// 	return 0;
// }