- 加减乘除简单功能的实现
- 鼠标版
- 功能up up
- and more
准备知识
- 函数指针数组(请戳深度剖析指针)
代码部分
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
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 Menu()
{
printf("1.加法 2.减法\n");
printf("3.乘法 4.除法\n");
printf("0.退出\n");
}
int main()
{
int (*pfArr[4])(int, int) = { Add,Sub,Mul,Div };
int input = 0;
int x = 0;
int y = 0;
Menu();
printf("请选择功能:\n");
scanf("%d", &input);
if (0 == input)
{
exit(0);
}
else if (input >= 1 && input <= 4)
{
printf("请输入两个数字(用空格隔开)\n");
scanf("%d %d", &x, &y);
printf("计算结果为:%d", (*pfArr[input - 1])(x, y));
printf("\n");
printf("--------------------------");
printf("\n");
main();
}
else
{
printf("输入数字有误请重新输入");
main();
}
return 0;
}
因此上述代码具有一定的局限性,那么如何修改代码呢?
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 Menu()
{
printf("1.加法 2.减法\n");
printf("3.乘法 4.除法\n");
printf("0.退出\n");
}
void Calc(int (*pf)(int, int))
{
int x = 0;
int y = 0;
printf("请输入两个数字(用空格隔开)\n");
scanf("%d %d", &x, &y);
printf("计算结果为:%d", (*pf)(x, y));
printf("\n");
printf("--------------------------");
printf("\n");
main();
}
int main()
{
int input = 0;
Menu();
printf("请选择功能:\n");
scanf("%d", &input);
switch (input)
{
case 1:
Calc(Add);
break;
case 2:
Calc(Sub);
break;
case 3:
Calc(Mul);
break;
case 4:
Calc(Div);
break;
case 0:
exit(0);
break;
default:
printf("输入有误请重新输入");
main();
break;
}
return 0;
}