题目:实现一个计算器,创建两个变量a,b,以及操作字符,实现输入“+”,执行加法,‘-’,执行减法,以此类推,有一个综合函数处理输入,有加减乘除求余5种运算,请用函数指针实现,以及函数指针作为参数来实现,具体实现如下:
- #include<stdlib.h>
- #include<stdio.h>
- typedef int(*FunPtr)(int, int);
- int Add(int a, int b)
- {
- return a + b;
- }
- int Sub(int a, int b)
- {
- return a - b;
- }
- int Mul(int a, int b)
- {
- return a*b;
- }
- int Div(int a, int b)
- {
- return a / b;
- }
- int Mod(int a, int b)
- {
- return a%b;
- }
- int Op(FunPtr f1, FunPtr f2, FunPtr f3, FunPtr f4, FunPtr f5, char cOperator, int a, int b, int * Out)
- {
- if (f1 == NULL || f2 == NULL || f3 == NULL || f4 == NULL || f5 == NULL || Out == NULL)
- {
- return 0;
- }
- switch (cOperator)
- {
- case '+':
- {
- *Out = f1(a, b);
- break;
- }
- case '-':
- {
- *Out = f2(a, b);
- break;
- }
- case '*':
- {
- *Out = f3(a, b);
- break;
- }
- case '/':
- {
- *Out = f4(a, b);
- break;
- }
- case '%':
- {
- *Out = f5(a, b);
- break;
- }
- default:
- return 0;
- }
- return 1;
- }
- int main()
- {
- printf("请输人两个数据和一个运算符(x+y):\n");
- int a = 0;
- int b = 0;
- char c = 0;
- int nRet = 0;
- scanf("%d%c%d", &a, &c, &b);
- if (Op(Add, Sub, Mul, Div, Mod, c, a, b, &nRet) == 0)
- {
- printf("函数计算失败.\n");
- return 0;
- }
- printf("结果=%d\n", nRet);
- system("pause");
- return 0;
- }
图1 运行效果

被折叠的 条评论
为什么被折叠?



