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

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

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


相关文章
|
17天前
|
人工智能 JSON API
全网刷屏的 Jev 模型正式开放!一手实战测评 + 保姆级教程
全网爆火的 Jev 模型是什么?有什么用?怎么使用?怎么接入 AI 编程工具?效果真的好么?傻子可懂的 Jev 保姆级实战教程 + 项目实战测评来啦
8550 24
|
16天前
|
人工智能 并行计算 PyTorch
秋叶 ComfyUI 2026 整合包 v3.2 完整部署教程:Python 3.13 + Torch 2.13 全栈升级
秋叶aaaki ComfyUI 2026年8月整合包v3.2正式发布!全面升级Python 3.13.11、PyTorch 2.13.0+cu130及ComfyUI v0.30.2,原生支持MiniMax H3、Wan 2.2、Qwen-Image-2.1等2026主流音视频/图像模型,解压即用,无需环境配置。
2948 14
|
16天前
|
人工智能 测试技术 API
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
Jev是TypeSafe AI推出的“系统一模型”,不生成文本,专做毫秒级结构化决策:Choice(多选)、Score(打分)、Noul(是非概率)。响应快193倍、成本低444倍,适合工单路由、内容审核、测试定级等高频判断场景。
2067 4
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
|
14天前
|
人工智能 编解码 并行计算
MiniMax-H3 一键整合包技术文档:8G 显存运行 AI 漫剧制作 —— 角色替换 / 动作迁移 / 文图生视频部署与调参指南
MiniMax H3 是 MiniMax 开源的全模态视频生成模型,支持文/图/音/视多条件输入,输出最高2K、15秒带双声道音频视频。本文档详述其Int8量化版在8GB显存下的本地一键部署、三段式工作流(EDIT/REPLACE/CONTINUE)、参数调优及常见问题排查。(239字)
|
10天前
|
人工智能 Linux 开发者
【2026国内使用】Codex安装过程一篇讲透(Win/Mac/Linux全支持)
Codex是OpenAI推出的AI编程智能体,可读取本地项目、理解需求并自动修改代码。支持桌面GUI、命令行(CLI)及VS Code/Cursor插件三种形态,覆盖可视化操作、终端高效开发与编辑器无缝集成场景,助开发者用自然语言驱动编码全流程。(239字)
【2026国内使用】Codex安装过程一篇讲透(Win/Mac/Linux全支持)
|
5天前
|
人工智能 JSON Linux
【全网最详细】ComfyUI使用教程:下载+本地部署+配置+工作流搭建一篇搞定(2026最新版)
ComfyUI是一款免费开源的本地AI绘图工具,采用节点式工作流设计,支持文生图、图生图、局部重绘、放大、换脸等多种功能。可离线运行,依赖显卡加速,无需联网。支持自定义流程保存与分享,插件生态丰富,适合进阶用户。(239字)
|
10天前
|
人工智能 JSON 编解码
【2026最新版】ComfyUI本地部署教程,新手也能看懂!
ComfyUI是本地运行的AI绘画工具,采用节点式工作流设计:通过拖拽连接“加载模型”“提示词编码”“采样”“解码”等模块,实现高度可控的文生图。新手推荐使用秋叶整合包,一键启动、内置模型管理与插件安装器,轻松上手。(239字)

热门文章

最新文章