C语言使用函数指针数组制作简易计算器

不用函数指针数组:

#include 
#include 


void menu()
{
	printf("*****************************************************\n");
	printf("**********1. 加法                 2. 减法************\n");
	printf("**********3. 乘法                 4. 除法************\n");
	printf("**********5. 异或                 0. 退出************\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;
}
int Xor(int x, int y)
{
	return x ^ y;
}

int main()
{
	int input = 0;
	int a=0, b = 0;
	do
	{
		menu();
		printf("请选择:");
		scanf("%d", &input);
		puts("");
		printf("请输入两个操作数:");
		scanf("%d%d", &a, &b);
		switch (input)
		{
		case 1:
			printf("%d\n" );
			break;
		case 2:
			printf("%d\n");
			break;
		case 3:
			printf("%d\n");
			break;
		case 4:
			printf("%d\n");
			break;
 
		case 0:
			printf("您已退出");
		default:
			printf("选择错误,请重新选择");
			break;
		}
	} while (input);
	return 0;
}

使用函数指针数组后:代码变少且更加简洁:

#define _CRT_SECURE_NO_WARNINGS 1

#include 
#include 

//利用函数数组指针做出简易计算器

void menu()
{
	printf("*****************************************************\n");
	printf("**********1. 加法                 2. 减法************\n");
	printf("**********3. 乘法                 4. 除法************\n");
	printf("**********5. 异或                 0. 退出************\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;
}
int Xor(int x, int y)
{
	return x ^ y;
}



//下面是利用函数函数指针数组写出来的简易计算器

int main()
{
	int input = 0;
	int x = 0;
	int y = 0;
	int ret = 0;
	int (*pfarr[6])(int, int) = { 0,add,sub,mul,Div,Ovr};
	do
	{
		menu();
		printf("请选择:");
		scanf("%d", &input);
		if (input <= 5 && input >= 1)
		{
			printf("请输入两个操作数:");
			scanf("%d%d", &x, &y);
			ret = pfarr[input](x, y);
			printf("%d\n", ret);
			printf("请稍等3秒后再次使用:");
			printf("3 ");
			Sleep(1000);
			printf("2 ");
			Sleep(1000);
			printf("1 ");
			Sleep(1000);
			printf("0 ");
			system("cls");
		}
		else if (input == 0)
		{
			printf("您已退出\n");
		}
		else
		{
			printf("选择错误,请重新选择");
		}
	} while (input);
}

目前只有加减乘除和异或,可以在函数指针数组中自行添加更多功能

你可能感兴趣的:(入门,C语言,c语言,算法,c++)