首页 > 编程语言 > 详细

计算器(c语言)函数指针的用途---转移表

时间:2021-06-23 21:53:35      阅读:21      评论:0      收藏:0      [点我收藏+]

函数指针使用数组的案例---//计算器(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;
}

技术分享图片

计算器(c语言)函数指针的用途---转移表

原文:https://blog.51cto.com/u_15277368/2942729

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!