当前位置: 首页 > news >正文

计算器的实现

计算器的⼀般实现

  • 计算器的一般实现:
  • 优化:使⽤函数指针数组的实现:

计算器的一般实现:

#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 x, y;int input = 1;int ret = 0;do{printf("*************************\n");printf(" 1:add 2:sub \n");printf(" 0:exit \n");printf("*************************\n");printf("请选择:");scanf("%d", &input);switch (input){case 1:printf("输⼊操作数:");scanf("%d %d", &x, &y);ret = add(x, y);printf("ret = %d\n", ret);break;case 2:printf("输⼊操作数:");scanf("%d %d", &x, &y);ret = sub(x, y);printf("ret = %d\n", ret);break;case 3:printf("输⼊操作数:");scanf("%d %d", &x, &y);ret = mul(x, y);printf("ret = %d\n", ret);break;case 4:printf("输⼊操作数:");scanf("%d %d", &x, &y);ret = div(x, y);printf("ret = %d\n", ret);break;case 0:printf("退出程序\n");break;default:printf("选择错误\n");break;}} while (input);return 0;
}

优化:使⽤函数指针数组的实现:

#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 x, y;int input = 1;int ret = 0;int(*p[5])(int x, int y) = { 0, 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 <= 4 && input >= 1)){printf( "输⼊操作数:" );scanf( "%d %d", &x, &y);ret = (*p[input])(x, y);printf( "ret = %d\n", ret);}else if(input == 0){printf("退出计算器\n");}else{printf( "输⼊有误\n" ); }}
http://www.lryc.cn/news/476212.html

相关文章:

  • 这个工具帮你快速实现数据集成和同步
  • 论文阅读:Computational Long Exposure Mobile Photography (一)
  • 项目解决方案:多地连锁药店高清视频监控系统建设解决方案(设计方案)
  • utf-8、pbkdf2_sha
  • Java之包,抽象类,接口
  • HarmonyOS鸿蒙开发入门,常用ArkUI组件学习(二)
  • 斩!JavaScript语法进阶
  • UFO:Windows操作系统的具象智能代理
  • win10/11无休眠设置和断电后电池模式自动休眠而不是睡眠-用以省电
  • 【动态规划之斐波那契数列模型】——累加递推型动态规划
  • 5g通信系统用到的crc码
  • Ubuntu-22.04 虚拟机安装
  • Windows、Linux系统上进行CPU和内存压力测试
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发八,使用SDLVSQT显示yuv文件 ,使用ffmpeg的AVFrame
  • HTML 标签属性——<a>、<img>、<form>、<input>、<table> 标签属性详解
  • css简写属性
  • 力扣刷题(sql)--零散知识点(2)
  • TCP是怎样工作的网络拥塞控制理论和算法部分记录
  • CSRF初级靶场
  • CSP/信奥赛C++刷题训练:经典差分例题(2):洛谷P9904 :Mieszanie kolorów
  • Java | Leetcode Java题解之第525题连续数组
  • YOLOv8改进 - 注意力篇 - 引入iRMB注意力机制
  • 项目学习总结
  • 用于低成本接收机的LoRa SF11 500KHz波形检测解调算法
  • WEB防护
  • 使用Jest进行JavaScript单元测试
  • 网络安全法详细介绍——爬虫教程
  • PCB什么情况该敷铜,什么情况不该敷铜!
  • 标准化的企业级信息管理系统信息中心必备PHP低代码平台
  • Rust 力扣 - 1984. 学生分数的最小差值