//自制计算器,实现加减乘除
//#include<stdio.h>
//#include<math.h>
//void menu()
//{
// printf("***************************************\n");
// printf("***********1.加法 2.减法********\n");
// printf("***********3.乘法 4.除法********\n");
// printf("*********** 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 main()
//{
// int input = 0;
// do
// {
// int x = 0;
// int y = 0;
// int ret = 0;
// menu();
// printf("请输入选择\n");
// scanf("%d", &input);
// switch (input)
// {
// case 1:
// printf("请输入两个操作数\n");
// scanf("%d %d", &x, &y);
// ret = Add(x, y);
// printf("%d\n", ret);
// break;
// case 2:
// printf("请输入两个操作数\n");
// scanf("%d %d", &x, &y);
// ret = Sub(x, y);
// printf("%d\n", ret);
// break;
// case 3:
// printf("请输入两个操作数\n");
// scanf("%d %d", &x, &y);
// ret = Mul(x, y);
// printf("%d\n", ret);
// break;
// case 4:
// printf("请输入两个操作数\n");
// scanf("%d %d", &x, &y);
// ret = Div(x, y);
// printf("%d\n", ret);
// break;
// case 0:
// printf("退出程序\n");
// break;
// default:
// printf("选择错误,请重新选择\n");
// }
// printf("ret=%d\n", ret);
// } while (input);
// return 0;
//}
//进阶版---函数指针数组
#include<stdio.h>
#include<math.h>
void menu()
{
printf("***************************************\n");
printf("***********1.加法 2.减法********\n");
printf("***********3.乘法 4.除法********\n");
printf("*********** 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 main()
{
int input = 0;
do
{
menu();
int(*pfArr[5])(int, int) = { NULL,Add,Sub,Mul,Div };//将每个函数地址(函数名)与下标
//对应起来,,调用函数int(*pfArr[4])(int, int)函数指针数组,函数指针是(*pfArr)(int,int)
int x = 0;
int y = 0;
int ret = 0;
printf("请输入选择\n");
scanf("%d", &input);
if (input >= 1 && input <= 4)
{
printf("请输入两个操作数\n");
scanf("%d %d", &x, &y);
ret = (pfArr[input])(x, y);//函数指针数组----目的是合并简化各个数组的相同部分
//根据下标找对应的函数值
printf("ret=%d\n", ret);
}
else if(input==0)
{
printf("退出程序\n");
break;
}
else
{
printf("选择错误,请重新选择\n");
}
} while (input);
return 0;
}