普通代码实现计算器功能:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//定义加减乘除方法
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 = 0;
int ret = 0;
int a = 0;
int b = 0;
do {
printf("********************\n");
printf(" 1.add 2.sub \n");
printf(" 3.mul 4.div \n");
printf(" 0.exit \n");
printf("********************\n");
printf("请选择:>");
scanf("%d", &input);
switch (input) {
case 1:
printf("请输入操作数:");
scanf("%d %d", &a, &b);
ret = add(a, b);
printf("%d\n", ret);
break;
case 2:
printf("请输入操作数:");
scanf("%d %d", &a, &b);
ret = sub(a, b);
printf("%d\n", ret);
break;
case 3:
printf("请输入操作数:");
scanf("%d %d", &a, &b);
ret = mul(a, b);
printf("%d\n", ret);
break;
case 4:
printf("请输入操作数:");
scanf("%d %d", &a, &b);
ret = div(a, b);
printf("%d\n", ret);
break;
case 0:
printf("退出程序~\n");
break;
default:
printf("选择错误\n");
break;
}
} while (input);
return 0;
}
函数指针数组实现计算器功能:
利用函数指针数组把计算器方法(封装?)在一个数组中
调用更加简单,代码更加简洁~
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
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 = 0;
int ret = 0;
int a = 0;
int b = 0;
声明定义函数指针数组
让NULL在0是让用户选择函数方法时操作方便
int(*pfArr[5])(int, int) = { NULL,Add,Sub,Mul,Div };
do {
printf("********************\n");
printf(" 1.add 2.sub \n");
printf(" 3.mul 4.div \n");
printf(" 0.exit \n");
printf("********************\n");
printf("请选择:>");
scanf("%d", &input);
//细心判断用户选择
if (input >= 1 && input <= 4) {
printf("请输入两个操作数:>");
scanf("%d %d", &a, &b);
通过用户input选择哪个函数,就去函数指针数组中找该函数
并且把a,b的数据传递过去。
ret = (pfArr[input])(a, b);
printf("ret = %d\n", ret);
}
else if (input == 0) {
printf("退出程序~");
break;
}
else {
printf("选择错误\n");
}
} while (input);
return 0;
}
本文介绍了如何使用函数指针数组优化计算器代码,通过将加减乘除操作封装为函数指针,实现更简洁的调用方式,提升代码可读性和灵活性。
2711

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



