【C语言】实现一个计算器(两种方式)

  • 1.使用switch…case…语句实现

#define _CRT_SECURE_NO_DEPRECATE 1
#include <stdio.h>
#include <stdlib.h>
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 x, y;
    int input = 1;
    int ret = 0;
    while (input)
    {
        printf("*************************\n");
        printf("****  1.add   2.sub  ****\n");
        printf("****  3.mul   4.div  ****\n");
        printf("*************************\n");
        printf("请选择:");
        scanf("%d", &input);
        switch (input)
        {
        case 1:
            printf("请输入操作数:");
            scanf("%d %d", &x, &y);
            ret = add(x, y);
            break;
        case 2:
            printf("请输入操作数:");
            scanf("%d %d", &x, &y);
            ret = sub(x, y);
            break;
        case 3:
            printf("请输入操作数:");
            scanf("%d %d", &x, &y);
            ret = mul(x, y);
            break;
        case 4:
            printf("请输入操作数:");
            scanf("%d %d", &x, &y);
            ret = div(x, y);
            break;
        default:
            printf("选择错误\n");
            break;
        }
        printf("%d\n", ret);
    }
    system("pause");
    return 0;
}
  • 2.使用函数指针数组实现

因为加减乘除四个函数的函数类型都一样,可以把它们的地址放在一个函数指针数组里面,通过数组的下标来访问每个函数。 
具体代码如下:

#define _CRT_SECURE_NO_DEPRECATE 1
#include <stdio.h>
#include <stdlib.h>
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 x, y;
    int input = 1;
    int ret = 0;
    int(*p[5])(int x, int y) = { 0, add, sub, mul, div };//转移表
    while (input)
    {
        printf("*************************\n");
        printf("****  1.add   2.sub  ****\n");
        printf("****  3.mul   4.div  ****\n");
        printf("*************************\n");
        printf("请选择:");
        scanf("%d", &input);
        if (input<4 && input>1)
        {
            printf("请输入操作数:");
            scanf("%d %d", &x, &y);
            ret = (*p[input])(x, y);
        }
        else
            printf("输入有误\n");
        printf("ret = %d", ret);
    }
    system("pause");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_42270373/article/details/84037207