首页 > 其他分享 >使用函数指针实现转移表

使用函数指针实现转移表

时间:2024-03-29 22:31:31浏览次数:18  
标签:return 实现 计算器 int printf input 函数指针 转移

用函数指针实现简单的计算器功能。
使用函数指针模拟实现计算器的功能大大减少了代码量,只需要创建一个函数指针数组,zi’azia其中存放着四钟加减乘除的算法。
代码如下

#include<stdio.h>
int add(int a, int b)
{
	return a + b;
}
int sub(int a, int b)
{
	return a - b;
}
int div(int a,int b)
{
	return a / b;
}
int mul(int a,int b)
{
	return a * b;
}
void menu()
{
	printf("******************************\n");
	printf("******** 1 加法 2 减法 *******\n");
	printf("******** 3 除法 4 乘法 *******\n");
	printf("******* 0 退出计算器   *******\n");
	printf("******************************\n");
}
int main()
{
	int (*cul[5])(int, int) = { 0,add,sub,div,mul };
	int input = 0;
	int x = 0, y = 0,z=0;
	do
	{
		menu();
		printf("请选择");
		scanf_s("%d", &input);
		if (input > 0 && input < 5)
		{
			printf("\n请输入两个操作数");
			scanf_s("%d %d", &x, &y);
			z = cul[input](x, y);
			printf("%d\n", z);
		}
		else if (input >= 5 && input<0)
		{
			printf("输入错误");
		}
		else
		{
			printf("游戏结束");
		}
	} while (input);
	return 0;
}

标签:return,实现,计算器,int,printf,input,函数指针,转移
From: https://blog.csdn.net/2301_80103660/article/details/137090700

相关文章

  • 使用vue2实现在线创建组件的功能
    前言我们使用vue2构建了一个项目,项目有个需求:用户可以在线创建vue组件,创建后的组件可以动态编译,项目无需重新部署,就可以在表单等位置引入使用组件。实现记录引用vue的esm包项目中引入vue的代码,原来是importVuefrom'vue'改为importVuefrom'vue/dist/vue.esm'vue.c......
  • C++项目——集群聊天服务器项目(七)Model层设计、注册业务实现
    在前几节的研究中,我们已经实现网络层与业务层分离,本节实现数据层与业务层分离,降低各层之间的耦合性,同时实现用户注册业务。网络层专注于处理网络通信与读写事件业务层专注于处理读写事件到来时所需求的各项业务数据层专注于与底层数据库间进行增删改查。数据库中有User、Fr......
  • 数据结构之————线性表ADT、以数组存储方式实现抽象类型的一个实例
    前言:基础填坑1、ADT在文章开始前,我们要弄明白什么是ADT(AbstractDataType)抽象数据类型1、ADT是用户定义的数据类型,它包含一组数据以及在这组数据上进行的操作。只定义操作的行为,没有具体的实现细节2、它存在的目的是使我们能够独立于程序的实现细节来理解数据结构的特......
  • PTA-树的遍历(python实现)
    自己做题过程中的一些想法,做一个记录,方便以后查看,如果能给读者一些启发也是极好的。欢迎大家的批评指正和交流讨论。题目描述:给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是......
  • Virtualbox 虚拟机实现与本地、互联网互通
    一、环境信息1、Windows版本:Windows10专业版2、virtualbox版本:6.1.103、centos版本:7.94、本文出处:https://www.cnblogs.com/crazyMyWay/p/18104612二、安装步骤1、Virtualbox工具先设置网卡及DHCP服务器  2、virtualbox设置两个网卡,一个是仅主机,一个是桥接  ......
  • Python 基于 xlsxwriter 实现百万数据导出 excel
    追加导出+自动切换sheet⚠️excel中的每个sheet最多只能保存1048576行数据#获取项目的根路径rootPathcurPath=os.path.abspath(os.path.dirname(__file__))rootPath=curPath[:curPath.find(你的项目名称+"/")+len(你的项目名称+"/")]#临时文件l......
  • 使用OpenCV实现换脸
    使用OpenCV实现换脸换脸介绍算法原理与流程效果程序换脸介绍换脸技术,顾名思义,是一种在不改变原始人物的基本特征,如发型、脸颊轮廓等前提下,巧妙地将该人物的五官特征替换为另一人的五官特征的技术。算法原理与流程易容术算法的关键步骤在于精准定位图像中的人脸位置......
  • Python 基于 xlsxwriter 实现百万数据导出 excel
    增量导出+自动切换sheet⚠️excel中的每个sheet最多只能保存1048576行数据#获取项目的根路径rootPathcurPath=os.path.abspath(os.path.dirname(__file__))rootPath=curPath[:curPath.find(你的项目名称+"/")+len(你的项目名称+"/")]#临时......
  • matlab实现神经网络
    一、原理人工神经网络是具有适应性的简单神经元组成的广泛并互连的网络,它的组织能够模拟生物神经系统对真实世界物体作出的交互式反应。人工神经网络具有自学习、自组织、较好的容错性和优良的非线性逼近能力将神经网络的学习能力引入到模糊系统中,将模糊系统的模糊化处理、模......
  • 用C语言实现汉诺塔游戏
    汉诺塔游戏。游戏目标是将A柱子上的盘子移动到C柱子上,且每次小的盘子要放在大的盘子上面。如只有一个盘子则直接移至C柱子。以如图所示为例子。3个盘子要移动至C柱子,具体步骤为:A到C,A到B,C到B,A到C,B到A,B到C,A到C。总共7步。也就是先把A柱子两个盘子(n-1)通过C柱子移......