(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;
}
相关推荐
旖旎夜光6 分钟前
【C++ 基础入门】C++ 多态(中):虚函数表、多态原理与动静绑定
开发语言·c++·笔记·学习
你看我名字18 分钟前
产品参数昨天还对,今天已过期:数眼智能与大模型应用如何做资料版本校验
开发语言·架构
希和20271 小时前
C语言程序设计题|有序数组插入数字冒泡排序
c语言·数据结构·算法
老秦包你会1 小时前
计算机网络第二课 ----Socket(套接字)编程预备
开发语言·计算机网络·php
旖旎夜光1 小时前
【C++ 基础入门】C++多态(下):单/多继承虚表、多态补充与 21 道高频题
开发语言·c++·笔记·学习
Wang's Blog10 小时前
Java 项目实战: 交友项目 - FastDFS:入门案例
java·开发语言·交友
apcipot_rain11 小时前
C++转Java日记(03)
java·开发语言·c++
布莱克60511 小时前
C++ 中 map 的 insert 与 emplace:key 已存在时会覆盖吗?
开发语言·数据结构·c++·算法·map
xys_67812 小时前
深挖C++:类和对象(中)
开发语言·c++
灿飞屋12 小时前
Rust 编程其实很简单
开发语言·rust