函数指针使用数组的案例---//计算器(1)
#include <stdio.h>
#include <stdlib.h>
void menu (){ ? //开始界面,设置一个菜单函数
printf("************************\n");
printf("** ?1.add ? ? ?2.sub ?**\n");
printf("** ?3.mul ? ? ?4.div ?**\n");
printf("** ? ? ? 0.exit ? ? ? **\n");
printf("************************\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;//注意全局变量和局部变量的区别;这里对input函数进行初始化应写在do--while循环外面
? ? int x=0;//定义两个初始化变量,来存放数据
? ? int y=0;
? ?do
? ?{
? ? ? ?menu();
? ? ? ?printf("请选择:>");
? ? ? ?scanf("%d",&input);
? ? ? ?printf("请输入两个操作数");
? ? ? ?scanf("%d%d",&x,&y);
? ? ? ?switch(input){
? ? ? ?case 1:
? ? ? ? ? ?printf ("%d\n",Add(x,y));//调用Add函数,并打印
? ? ? ? ? ?break;
? ? ? ?case 2:
? ? ? ? ? ?printf ("%d\n",Sub(x,y));
? ? ? ? ? ?break;
? ? ? ?case 3:
? ? ? ? ? ?printf ("%d\n",Mul(x,y));
? ? ? ? ? ?break;
? ? ? ?case 4:
? ? ? ? ? ?printf ("%d\n",Div(x,y));
? ? ? ? ? ?break;
? ? ? ?case 0:
? ? ? ? ? ?printf("退出\n");
? ? ? ? ? ?break;
? ? ? ?default:
? ? ? ? ? ?printf("选择错误\n");
? ? ? ? ? ?break;
? ? ? ?}
? ?}while(input);
? ?return 0;
}
完善后的计算机代码(2)
#include <stdio.h>
#include <stdlib.h>
//函数指针使用数组的案例
//计算器
void menu (){ ? //开始界面,设置一个菜单函数
printf("************************\n");
printf("** ?1.add ? ? ?2.sub ?**\n");
printf("** ?3.mul ? ? ?4.div ?**\n");
printf("** ? ? ? 0.exit ? ? ? **\n");
printf("************************\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));//调用Add函数,并打印
? ? ? ? ? ?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);
? ?return 0;
}
代码展示:
函数指针数组来设置计算器!!!(3)
#include <stdio.h>
#include <stdlib.h>
//函数指针使用数组的案例
//计算器
void menu (){ ? //开始界面,设置一个菜单函数
printf("************************\n");
printf("** ?1.add ? ? ?2.sub ?**\n");
printf("** ?3.mul ? ? ?4.div ?**\n");
printf("** ?5.XOR ? ? ?0.exit **\n");
printf("************************\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;
以后可以直接添加相关的计算,不必动do --while循环
步骤:1.在函数部分添加运算函数
? ? ? ? ? ? 2.在函数指针数组中添加相关函数名
? ? ? ? ? ?3.if语句中input的大小改一下
? ? int (*pfArr[])(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("选择错误");
? ? ? ?}
? ?}while(input);
? ?return 0;
}
原文:https://blog.51cto.com/u_15277368/2942729