实现简单的计算器功能(思路来自鹏哥C语言教程)

理解函数指针和数组的巧妙用法


#include <stdio.h>

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 x = 0;
  int y = 0;
  do
  {
    menu();
    printf("请选择:>\n");
    scanf("%d", &input);
    //pfarr是一个函数指针数组
    int (*pfarr[])(int x, int y) = {0, Add, Sub, Mul, Div};//这是一个数组,数组里面存放的是类型是函数指针,int (* )(int, int) 
    if (input >= 1 && input <= 4)
    {
      printf("请输入了两个操作数:>\n");
      scanf("%d%d", &x, &y);
      int ret = (*pfarr[input])(x, y);
      printf("%d\n", ret);
    }
    else if (input == 0)
    {
      printf("退出\n");
    }
    else
    {
      printf("选择错误\n");
    }
  } while (input);

  return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值