利用c语言中的函数指针实现整数四则运算的转移表

前言        

        今天学习了c语言中的函数指针部分,想与大家分享一下利用c语言中的函数指针实现整数四则运算的转移表的代码编写。

代码展示

#include<stdio.h>

int Add(int x, int y)//定义各个函数
{
	return x + y;
}

int Min(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 main()
{
	int x, y, z = 1;;
	int (*arr[5])(int, int) = { 0,&Add,&Min,&Mul,&Div };//创建函数指针数组
	while (z)
	{
		printf("请输入数字操作:1~加法;2~减法;3~乘法;4~整除;0~退出\n");
		scanf("%d", &z);
		if (z == 0)//判断是否退出
			break;
		printf("输入两个操作数:");
		scanf("%d %d", &x, &y);
		int ret = arr[z](x, y);//调用函数指针数组
		printf("%d\n", ret);
	} 
	return 0;
}

原理分析

函数功能
 
-  Add 函数:接受两个整数参数 x 和 y ,返回它们的和,实现了简单的加法运算。
-  Min 函数:接受两个整数参数 x 和 y ,返回 x 减去 y 的结果,完成减法操作。
-  Mul 函数:以两个整数 x 和 y 为参数,返回它们的乘积,执行乘法运算。
-  Div 函数:接收两个整数 x 和 y ,返回 x 除以 y 的商(这里是整除,会舍去小数部分),实现除法操作。
 
主函数部分
 
- 变量定义:
- 定义了三个整数变量 x 、 y 和 z ,其中 z 初始化为 1 。 x 和 y 用于存储用户输入的操作数, z 用于控制循环和选择操作类型。
- 函数指针数组定义:
-  int (*arr[5])(int, int)  定义了一个函数指针数组 arr ,它可以存储指向返回值为整数且接受两个整数参数的函数的指针。数组大小为 5 ,并初始化为 { 0,&Add,&Min,&Mul,&Div } ,这里将 Add 、 Min 、 Mul 、 Div 这四个函数的地址依次存入数组(索引从 1 开始对应相应操作,索引 0 初始化为 0 ,便于后续对while循环的调整)。
- 循环操作:
- 通过 while (z) 循环来不断接收用户的操作选择,直到 z 为 0 时退出循环。
- 在循环内,首先提示用户输入数字操作( 1 到 4 对应四种算术运算, 0 表示退出),并通过 scanf 读取用户输入的值到 z 中。如果 z 为 0 ,则直接跳出循环结束程序。
- 接着提示用户输入两个操作数,并通过 scanf 读取到 x 和 y 中。
- 然后通过 int ret = arr[z](x, y); 调用对应的函数(根据用户输入的 z 值找到数组中对应的函数指针并执行函数),并将返回结果存储在 ret 中。
- 最后通过 printf("%d\n", ret); 输出操作结果。
 

小结

        本人是c萌新一枚,代码如有错误或者是什么值得改进的地方,欢迎大家在评论区或者私信中指出,如果本文对您有帮助的话,还希望点点点赞与收藏,谢谢大家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值