计算器
运算函数
加法
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 awy(int x, int y)
{
return x & y;
}
按位或
int awh(int x, int y)
{
return x | y;
}
按位异或
int awyh(int x, int y)
{
return x ^ y;
}
左移
int zy(int x, int y)
{
return x << y;
}
右移
int yy(int x, int y)
{
return x >> y;
}
菜单
void menu()
{
printf("**********************\n");
printf("**** 计 算 器 ****\n");
printf("**** 1.add 2.sub ****\n");
printf("**** 3.mul 4.div ****\n");
printf("**** 5. & 6. | ****\n");
printf("**** 7. ^ 8. >> ****\n");
printf("**** 9.<< 0.exit ***\n");
printf("**********************\n");
}
实现函数
通过函数指针数组运行运算函数,num[0]=0,是为了对应下标
int (*num[])(int, int) = { 0, add, sub, mul, div, awy, awh, awyh, yy, zy };
通过do while 循环运行
do
{
menu();
printf("请选择:>");
scanf("%d", &a);
if (a >= 1 && a <= 9)
{
printf("请输入两个操作数:>");
scanf("%d %d", &x, &y);
z = num[a](x, y);
printf("%d\n", z);
}
else if (a == 0)
{
printf("退出计算器\n");
}
else
printf("选择错误,重新输入\n");
} while (a);
完整代码
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 awy(int x, int y)
{
return x & y;
}
int awh(int x, int y)
{
return x | y;
}
int awyh(int x, int y)
{
return x ^ y;
}
int yy(int x, int y)
{
return x >> y;
}
int zy(int x, int y)
{
return x << y;
}
void menu()
{
printf("**********************\n");
printf("**** 计 算 器 ****\n");
printf("**** 1.add 2.sub ****\n");
printf("**** 3.mul 4.div ****\n");
printf("**** 5. & 6. | ****\n");
printf("**** 7. ^ 8. >> ****\n");
printf("**** 9.<< 0.exit ***\n");
printf("**********************\n");
}
int main()
{
int (*num[])(int, int) = { 0, add, sub, mul, div, awy, awh, awyh, yy, zy };
int a = 0;
int z = 0;
int x, y;
do
{
menu();
printf("请选择:>");
scanf("%d", &a);
if (a >= 1 && a <= 9)
{
printf("请输入两个操作数:>");
scanf("%d %d", &x, &y);
z = num[a](x, y);
printf("%d\n", z);
}
else if (a == 0)
{
printf("退出计算器\n");
}
else
printf("选择错误,重新输入\n");
} while (a);
return 0;
}
运行实例