【C语言实现】简易计算器(3种)

1函数指针数组(应用:转移表)

//void menu()
//{
//    printf("---------------计算器---------------\n");
//    printf("------ 1.ADD          2.SUB -------\n");
//    printf("------ 3.MUL          4.DIV -------\n");
//    printf("---------------0.EXIT--------------\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;
//}
//
//int main()
//{
//    int input = 0;
//    int r = 0;
//    int x = 0;int y = 0;
//    //转移表
//    int (*p[])(int, int) = {NULL,ADD,SUB,MUL,DIV };
//    
//        do
//        {
//            menu();
//            printf("请选择:\n");
//            scanf("%d", &input);
//        
//            if (input>=1 && input <= 4 )
//            {    
//                printf("请输入两个操作数:\n");
//                scanf("%d,%d", &x, &y);
//                r = p[input](x, y);
//                printf("%d\n", r);
//            }
//            else if (input == 0)
//            {
//                printf("退出\n");
//            }
//            else
//            {
//                printf("输入错误,请重新输入:\n");
//            }
//        } while (input);
//
//    return 0;
//}

2

//void menu()
//{
//    printf("---------------计算器---------------\n");
//    printf("------ 1.ADD          2.SUB -------\n");
//    printf("------ 3.MUL          4.DIV -------\n");
//    printf("---------------0.EXIT--------------\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;
//}
//
//int main()
//{
//    int input = 0;
//    int r = 0;
//    int x = 0;int y = 0;
//        do
//        {
//            menu();
//            printf("请选择:\n");
//            scanf("%d", &input);
//        
//            switch (input)
//            {
//            case 1:
//                    printf("请输入两个操作数:\n");
//                    scanf("%d%d", &x, &y);
//                    r = ADD(x, y);
//                    printf("%d\n", r);
//                    break;
//            case 2:
//                    printf("请输入两个操作数:\n");
//                    scanf("%d%d", &x, &y);
//                    r = SUB(x, y);
//                    printf("%d\n", r);
//                    break;
//            case 3:
//                    printf("请输入两个操作数:\n");
//                    scanf("%d%d", &x, &y);
//                    r = MUL(x, y);
//                    printf("%d\n", r);
//                    break;
//            case 4:
//                    printf("请输入两个操作数:\n");
//                    scanf("%d%d", &x, &y);
//                    r = DIV(x, y);
//                    printf("%d\n", r);
//                    break;
//            case 0:
//                    printf("退出\n");
//                    break;
//            default:
//                printf("选择错误\n");
//            }
//        } while (input);
//
//    return 0;
//}

3回调函数:即通过函数指针调用的函数
void menu()
{
    printf("---------------计算器---------------\n");
    printf("------ 1.ADD          2.SUB -------\n");
    printf("------ 3.MUL          4.DIV -------\n");
    printf("---------------0.EXIT--------------\n");
}

int (*p[])(int, int) = { ADD,SUB,MUL,DIV };

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;
}

int calcint(*p)(int,int))//(int input)
{
    int x = 0; int y = 0;
    int r = 0;
    printf("请输入两个操作数:\n");
    scanf("%d%d", &x, &y);
    r = p(x,y);//p[input](x,y)
    printf("%d\n", r);
    return r;
}

int main()
{
    int input = 0;
    int r = 0;
    int x = 0;int y = 0;
    
    do
    {
        menu();
        printf("请选择:\n");
        scanf("%d", &input);

        switch (input)
        {
        case 1:
            calc(ADD);
            break;
        case 2:
            calc(SUB);
            break;
        case 3:
            calc(MUL);
            break;
        case 4:
            calc(DIV);
            break;
        case 0:
            printf("退出\n");
            break;
        default:
            printf("选择错误\n");
        }
    } while (input);

    return 0;
}

你可能感兴趣的:(c语言,开发语言)