计算器的实现(回调函数)

简介: 上一节讲了用函数指针数组实现一个简易的计算器,这节讲一下用回调函数实现计算器

1.我们先看一段实现计算器的代码

很简单并且容易理解,但是代码有点过于冗余,比如每次输入输出和调用函数都在代码中出现了很多遍,如果使用回调函数就可以轻松解决这一点

先看一下回调函数的定义

看不懂??很正常 且听慢慢分析

图中的代码反出现,现在考虑即将他们放在一个函数里实现,相信很多人都有过这样的想法,


但是呢,中间的每个里面调用的函数又不同,所以有点行不通,让我们试试回调函数的方法


 2 .回调:但自己却不使用,传给别人用


如果能有一个函数,里面包含输入和输出函数,并且每次向这个函数传一个函数,他可以再传出去,就解决了每次实现不同运算的想法,看代码

例如这次传出去一个Add加法函数

用这个函数接收,这个函数在return 的时候再调用传上来的函数,就可以实现这个想法

pf()的调用正是Add函数,如传上来的是其他的例如Sub()减法,或者Div()除法的话也可以调用

这样,计算器就做好了

点赞取代码殴

代码奉上

#define _CRT_SECURE_NO_WARNINGS
#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 Calc(int (*pf)(int, int))
{
  int x=0, y=0;
  printf("请输入两个操作数:\n");
  scanf("%d%d", &x, &y);
  return pf(x, y);
}
int main()
{
  int option = 0;//定义选项
  int x = 0, y = 0;
  int ret = 0;//定义结果
  do
  {
    menu();
    scanf("%d",&option);
    switch (option)
    {
      case 1:
      {
        ret = Calc(Add);
      printf("%d\n", ret);
      break;
       }
      case 2:
      {
        ret = Calc(Sub);
        printf("%d\n", ret);
        break;
      }
      case 3:
      {
        ret = Calc(Mul);
        printf("%d\n", ret);
        break;
      }
      case 4:
      {
        ret = Calc(Div);
          printf("%d\n", ret);
        break;
      }
      case 0:
      {
        printf("退出计算器程序\n");
        break; 
}
      default:
      {
        printf("输入错误,请重新输入\n");
      }
    }
  } while (option);
  return 0;
}


相关文章
|
7月前
|
人工智能 机器人 中间件
【C++】C++回调函数基本用法(详细讲解)
【C++】C++回调函数基本用法(详细讲解)
|
Java
从计算器小例子的总结思考
从计算器小例子的总结思考
129 0
|
7月前
|
C语言
C语言程序基本的计算器功能
C语言程序基本的计算器功能
147 0
|
7月前
回调函数,以qsort函数为例
回调函数,以qsort函数为例
30 0
|
Java
计算器的模拟实现
计算器的模拟实现
94 0
|
7月前
|
消息中间件 存储 API
【C/C++】回调函数详解&注册窗口类&LRESULT & CALLBACK详解以及游戏中的应用
【C/C++】回调函数详解&注册窗口类&LRESULT & CALLBACK详解以及游戏中的应用
275 0
|
存储 小程序
计算器小程序+函数指针数组介绍
计算器是我们生活中重要的使用工具,那么我们要怎样写出计算机小程序呢?想必大家有很多种写出计算器程序的代码,在这里小编将用函数指针数组写出计算器程序.
60 0
|
JavaScript 前端开发
特殊函数:匿名函数的两种应用(①回调函数②自调函数)
特殊函数:匿名函数的两种应用(①回调函数②自调函数)
139 0
特殊函数:匿名函数的两种应用(①回调函数②自调函数)
|
C语言 C++
字符串处理函数和内存处理函数的模拟实现
上述就是几个常见的字符串处理函数,我们来模拟实现的目的就是为了以后不能使用这种函数的时候能自己写,主要是学习方法。
68 0
字符串处理函数和内存处理函数的模拟实现
|
JavaScript
js函数的返回值 / 回调函数 / 函数变量
js函数的返回值 / 回调函数 / 函数变量
64 0
js函数的返回值 / 回调函数 / 函数变量