(C语言)用函数指针数组实现计算器

一、运算结果;

二、源代码;

cs 复制代码
# define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>

//实现目录函数;
void menum()
{
	//打印目录;
	printf("***********************************************\n");
	printf("*************   1.Add   2.Sub   ***************\n");
	printf("*************   3.Mul   4.Div   ***************\n");
	printf("******************   0.exit  ******************\n");
	printf("***********************************************\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;
}

//实现计算器函数;
void Calc(int (*pf) (int, int))
{
	//初始化变量值;
	int x = 0;
	int y = 0;
	int ret = 0;

	//提示用户输入操作数;
	printf("请输入2个操作数:--->");
	//获取用户输入的操作数;
	scanf("%d %d", &x, &y);

	//根据用户计算要求不同,选用不同的计算函数;
	ret = pf(x, y);

	//打印结果;
	printf("%d\n", ret);

}

int main()
{
	//初始化变量值;
	int input = 0;
	int x = 0;
	int y = 0;
	int ret = 0;

	//创建函数指针数组;
	int (*pfarr[5]) (int, int) = { 0, Add, Sub, Mul, Div };

	//用do....while实现计算机判断计算;
	do
	{
		//调用目录函数;
		menum();

		//提示用户做出选择;
		printf("请做出选择:---->");
		//获取用户输入的数据;
		scanf("%d", &input);

		//用if实现计算机判断;

		//当input==0时,退出运算;
		if (input == 0)
		{
			//提示用户退出运算;
			printf("提出计算器!!!!");
		}
		//根据input不同的值,做出相应的判断;
		else if (input >= 1 && input <= 4)
		{
			//提示用户输入要计算的数;
			printf("请输入两个要执行运算的操作数:---->");
			//获取用户输入的操作数;
			scanf("%d %d", &x, &y);
			//根据不同的input值用函数指针数组做出不同的判断运算;
			ret = pfarr[input](x, y);
			//打印结果;
			printf("%d\n", ret);
		}


	} while (input);

	return 0;
}
相关推荐
88号技师11 分钟前
2026年9月SCI-天气状态蚂蚁优化算法Weather State Ants Optimizer-附Matlab免费代码
开发语言·算法·matlab·优化算法
孙启超11 分钟前
【AI开发之Rust】第 20 课:壳侧 API 封装 —— 把 Rust 能力接进真实 UI
开发语言·后端·rust
芯祥联31 分钟前
STM32 上跑 MQTT 怎么选?嵌入式 MQTT 客户端 C 语言实现对比
c语言·stm32·单片机·嵌入式硬件·网络协议·开源·broker
CarIise36 分钟前
MyBatis缓存与分页插件:从一级二级缓存到底层原理与PageHelper实战
java·开发语言·spring
chenbingjie_c8 小时前
C++ 进阶核心知识点总结:模板、内存分区、new/delete、内存池
开发语言·c++
Escalating_xu9 小时前
【C 语言】深入理解指针(1·下):指针运算、野指针、assert 与传址实战
java·c语言·开发语言
实心儿儿9 小时前
Qt — Qt 事件
开发语言·qt
周杰偷奶茶9 小时前
【Java】数据类型与变量
java·开发语言
code斗9 小时前
Java数据结构:堆详解
java·开发语言·数据结构