第一种调用函数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void meau() {
printf("---------------------------------\n");
printf("----- 1.add 2.sub -----\n");
printf("----- 3.mul 4.div -----\n");
printf("----- 0.exit -----\n");
printf("---------------------------------\n");
}
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;
}
void calc(int (*c)(int,int)) {
int a;
int b;
int ret;
printf("请输入2个操作数:");
scanf("%d %d",&a,&b);
ret = c(a, b);
printf("结果为:%d\n", ret);
}
int main() {
int input;
do {
meau();
printf("请输入:");
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:
printf("退出\n");
break;
default:
printf("输入错误\n");
break;
}
} while (input);
return 0;
}
第二种使用函数指针数组
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void meau() {
printf("---------------------------------\n");
printf("----- 1.add 2.sub -----\n");
printf("----- 3.mul 4.div -----\n");
printf("----- 0.exit -----\n");
printf("---------------------------------\n");
}
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 main() {
int input;
int x;
int (*arr[])(int, int) = { 0,Add,Sub,Mul,Div };
do {
meau();
printf("请输入序号:");
scanf("%d",&input);
if(input>=1&&input<=4){
int a, b;
printf("请输入两个操作数:");
scanf("%d %d", &a, &b);
x = arr[input](a, b);
printf("结果为%d\n",x);
}
else if (input == 0) {
printf("退出");
}
else {
printf("输入错误!\n");
}
} while (input);
}