回调函数实现四则运算器(可增添功能)

简介: 本文讲解:回调函数实现四则运算器(可增添功能)

  前言

你好,我是程序猿爱打拳。在我的上篇博文中我们学到了函数指针以及函数指针数组的用法,这篇博文我将延申上一篇博客来讲解回调函数的用法。当然,如果你还不懂函数指针和函数指针数组的用法可以观看这篇文章。


回调函数,是在函数指针的基础上进行修改的。什么意思呢:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应函数指针的用法。回调函数switch语句case语句实现四则运算器:

#include<stdio.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;
}
void Menu()
{
  printf("========================\n");
  printf("====  1.Add  2.Sub  ====\n");
  printf("====  3.Mul  4.Div  ====\n");
  printf("====  0.Exit        ====\n");
  printf("========================\n");
}
void calc(int (*p)(int,int))
{
  int x = 0;
  int y = 0;
  int ret = 0;
  printf("请输入两个整数:>");
  scanf("%d %d", &x, &y);
  ret = (*p)(x, y);
  printf("结果为:%d\n", ret);
}
int main()
{
  int input = 0;
  do
  {
    Menu();
    printf("请输入你的选项:>");
    scanf("%d", &input);
    switch (input)
    {
    case 0:
      printf("你已退出程序!");
      break;
    case 1:
      calc(Add);
      break;
    case 2:
      calc(Sub);
      break;
    case 3:
      calc(Mul);
      break;
    case 4:
      calc(Div);
      break;
    default:
      printf("请输入正确的选项!\n");
    }
  } while (input);
  return 0;
}

image.gif

实现效果:

image.gif编辑

相关文章
Ant Design Pro:设置哈希hash路由
Ant Design Pro:设置哈希hash路由
315 0
|
机器学习/深度学习 人工智能 算法
AI学习
学习AI涉及编程语言(如Python)、数学基础、AI理论(包括机器学习、深度学习)、实践应用(如使用TensorFlow)、案例研究、伦理法律及持续跟进最新技术。从基础知识到项目实战,全面掌握AI需要扎实的理论与实践经验,关注领域发展,并具备跨学科协作能力。对于个人职业发展和适应未来社会,AI技能至关重要。
591 3
|
8月前
|
C语言
【C语言程序设计——循环程序设计】统计海军鸣放礼炮声数量(头歌实践教学平台习题)【合集】
有A、B、C三艘军舰同时开始鸣放礼炮各21响。已知A舰每隔5秒1次,B舰每隔6秒放1次,C舰每隔7秒放1次。编程计算观众总共听到几次礼炮声。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。开始你的任务吧,祝你成功!
166 13
|
测试技术 API
接口设计原则与最佳实践指南
接口设计原则与最佳实践指南
|
存储 人工智能 大数据
「PAI-ArtLab100 AIGC」设计普惠计划发布!与 100+ 高校共同探索 AIGC 教育新路径
6月28日,D20全球设计院长峰会(简称D20峰会)在杭州阿里巴巴全球总部召开。峰会现场,阿里云高校合作部、阿里云人工智能平台PAI,以及阿里云设计中心联合发布「ArtLab100 AIGC设计普惠计划」(简称ArtLab100计划),与 100+ 高校共同探索 AIGC 教育新路径。旨在推动设计艺术教育与人工智能技术的深度结合,培育新时代的设计创新人才,同时加强校企合作,促进产业界与学术界的协同进步。
「PAI-ArtLab100 AIGC」设计普惠计划发布!与 100+ 高校共同探索 AIGC 教育新路径
|
开发框架 JSON 前端开发
循序渐进VUE+Element 前端应用开发(7)--- 介绍一些常规的JS处理函数
循序渐进VUE+Element 前端应用开发(7)--- 介绍一些常规的JS处理函数
|
存储 设计模式 测试技术
了解三层架构:表示层、业务逻辑层、数据访问层
了解三层架构:表示层、业务逻辑层、数据访问层
6411 0
|
数据安全/隐私保护
BUUCTF [ACTF新生赛2020]swp 1
BUUCTF [ACTF新生赛2020]swp 1
342 1
|
开发者
Flutter笔记:Widgets Easier组件库 - 使用标签(Tag)
Flutter笔记:Widgets Easier组件库 - 使用标签(Tag)
272 0
|
小程序 前端开发 JavaScript
微信小程序MINA框架
微信小程序MINA框架
556 0