1.计算器 不使用函数指针数组
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//计算器
void menu() {
printf("*********************\n");
printf("** 1.add 2.sub **\n");
printf("** 3.mul 4.div **\n");
printf("** 0.exit **\n");
}
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;
}
int main() {
int input = 0;
int x = 0;
int y = 0;
do {
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
printf("请输入两个操作数:>");
scanf("%d%d", &x, &y);
printf("%d\n", Add(x, y));
break;
case 2:
printf("请输入两个操作数:>");
scanf("%d%d", &x, &y);
printf("%d\n", Sub(x, y));
break;
case 3:
printf("请输入两个操作数:>");
scanf("%d%d", &x, &y);
printf("%d\n", Mul(x, y));
break;
case 4:
printf("请输入两个操作数:>");
scanf("%d%d", &x, &y);
printf("%d\n", Div(x, y));
break;
case 0:
printf("退出\n");
break;
default:
printf("选择错误\n");
break;
}
} while (input);
}
*********************
** 1.add 2.sub **
** 3.mul 4.div **
** 0.exit **
请选择:>1
请输入两个操作数:>2 3
5
*********************
** 1.add 2.sub **
** 3.mul 4.div **
** 0.exit **
请选择:>3
请输入两个操作数:>2 3
6
*********************
** 1.add 2.sub **
** 3.mul 4.div **
** 0.exit **
请选择:>0
退出
2.计算器 使用函数指针数组
在需要使用多个函数的时候,函数指针数组可以更加方便简洁的实现。
且可以很容易的增加或减少函数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//计算器
void menu() {
printf("*********************\n");
printf("** 1.add 2.sub **\n");
printf("** 3.mul 4.div **\n");
printf("** 5.xor 0.exit **\n");
}
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;
}
int Xor(int x, int y) {
return x ^ y;
}
int main() {
int input = 0;
int x = 0;
int y = 0;
int (*pfArr[6])(int, int) = { 0,Add,Sub,Mul,Div,Xor };
do {
menu();
printf("请选择:>");
scanf("%d", &input);
if (input >= 1 && input <= 5) {
printf("请输入两个操作数:>");
scanf("%d%d", &x, &y);
int ret = pfArr[input](x, y);
printf("%d\n", ret);
}
else if (input == 0) {
printf("退出\n");
}
else {
printf("选择错误\n");
}
} while (input);
}
*********************
** 1.add 2.sub **
** 3.mul 4.div **
** 5.xor 0.exit **
请选择:>1
请输入两个操作数:>2 3
5
*********************
** 1.add 2.sub **
** 3.mul 4.div **
** 5.xor 0.exit **
请选择:>2
请输入两个操作数:>4 8
-4
*********************
** 1.add 2.sub **
** 3.mul 4.div **
** 5.xor 0.exit **
请选择:>4
请输入两个操作数:>9 3
3
*********************
** 1.add 2.sub **
** 3.mul 4.div **
** 5.xor 0.exit **
请选择:>5
请输入两个操作数:>2 2
0
*********************
** 1.add 2.sub **
** 3.mul 4.div **
** 5.xor 0.exit **
请选择:>0
退出