基础版
#include<stdio.h>
int add(int num, int num1)
{
return num + num1;
}
int sub(int num, int num1)
{
return num - num1;
}
int mul(int num, int num1)
{
return num * num1;
}
int div(int num, int num1)
{
return num / num1;
}
int main()
{
int num, num1, ret;
char str;
printf("Please input:");
scanf("%d%c%d", &num, &str, &num1);
if(str == '+')
{
ret = add(num, num1);
}
else if(str == '-')
{
ret = sub(num, num1);
}
else if(str == '*')
{
ret = mul(num, num1);
}
else
{
ret = div(num, num1);
}
printf("Result is:%d\n", ret);
return 0;
}
函数指针进阶版
#include<stdio.h>
int add(int num, int num1)
{
return num + num1;
}
int sub(int num, int num1)
{
return num - num1;
}
int mul(int num, int num1)
{
return num * num1;
}
int div(int num, int num1)
{
return num / num1;
}
int main()
{
int num, num1, ret;
char str;
int (*p_func)(int, int) = NULL;//函数指针
printf("Please input:");
scanf("%d%c%d", &num, &str, &num1);
if(str == '+')
{
// ret = add(num, num1);
p_func = add;
}
else if(str == '-')
{
// ret = sub(num, num1);
p_func = sub;
}
else if(str == '*')
{
// ret = mul(num, num1);
p_func = mul;
}
else
{
// ret = div(num, num1);
p_func = div;
}
// printf("Result is:%d\n", ret);
printf("Result is:%d\n", p_func(num, num1));
return 0;
}
函数指针+结构体高级版
#include<stdio.h>
typedef struct
{
int x;
int y;
int (*p_func)(int, int);
}expr;
int add(int num, int num1)
{
return num + num1;
}
int sub(int num, int num1)
{
return num - num1;
}
int mul(int num, int num1)
{
return num * num1;
}
int div(int num, int num1)
{
return num / num1;
}
int main()
{
expr expers[3] ={};
int num = 0;
char opr = 0;
for(num = 0;num < 3;num++)
{
printf("请输入表达式:");
scanf("%d%c%d", &expers[num].x, &opr, &expers[num].y);
if(opr == '+')
{
expers[num].p_func = add;
}
else if(opr == '-')
{
expers[num].p_func = sub;
}
else if(opr == '*')
{
expers[num].p_func = mul;
}
else
{
expers[num].p_func = div;
}
}
for(num = 0;num < 3;num++)
{
printf("运算结果为:%d\n", expers[num].p_func(expers[num].x, expers[num].y));
}
printf("%lu\n", sizeof(expr));
return 0;
}