当前位置:网站首页>看【C语言】实现简易计算器教程,让小伙伴们为你竖起大拇指
看【C语言】实现简易计算器教程,让小伙伴们为你竖起大拇指
2022-08-02 18:12:00 【eat_sleep_play( )】
目录
1.实现逻辑
实现一个简易的计算器,可以计算两个整数的加减乘除
2.运行过程

3.优化前代码分析
主函数
int main()
{
int x = 0;
int y = 0;
int ret = 0;
int input = 0;
do
{
menu();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case 0:
printf("退出计算器\n");
break;
case 1:
printf("请输入两个操作数:");
scanf("%d %d", &x, &y);
ret = Add(x, y);
printf("%d\n", ret);
break;
case 2:
printf("请输入两个操作数:");
scanf("%d %d", &x, &y);
ret = Sub(x, y);
printf("%d\n", ret);
break;
case 3:
printf("请输入两个操作数:");
scanf("%d %d", &x, &y);
ret = Wul(x, y);
printf("%d\n", ret);
break;
case 4:
printf("请输入两个操作数:");
scanf("%d %d", &x, &y);
ret = Div(x, y);
printf("%d\n", ret);
break;
default:
printf("输入错误\n");
break;
}
} while (input);
return 0;
}利用switch语句选择要进行的计算方式,利用do while 来实现是继续计算还是退出计算器。case语句分别调用了不同的计算函数。
计算函数
int Add(int x, int y)//加法函数
{
return x + y;
}
int Sub(int x, int y)//减法函数
{
return x - y;
}
int Wul(int x, int y)//乘法函数
{
return x * y;
}
int Div(int x, int y)//除法函数
{
return x / y;
}4.优化后代码分析
主函数
int main()
{
int input = 0;
do
{
menu();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case 0:
printf("退出计算器\n");
break;
case 1:
salc(Add);
break;
case 2:
salc(Sub);
break;
case 3:
salc(Wul);
break;
case 4:
salc(Div);
break;
default:
printf("输入错误\n");
break;
}
} while (input);
return 0;
}利用switch语句选择要进行的计算方式,利用do while 来实现是继续计算还是退出计算器。case语句的参数是计算方法函数的函数名,也是函数的地址。
计算方法函数
int Add(int x, int y)//加法函数
{
return x + y;
}
int Sub(int x, int y)//减法函数
{
return x - y;
}
int Wul(int x, int y)//乘法函数
{
return x * y;
}
int Div(int x, int y)//除法函数
{
return x / y;
}计算函数,用来完成两个整数的计算。返回的值就是计算的结果。
输入操作数的函数
void salc(int (*pf)(int, int))
{
int x = 0;
int y = 0;
int ret = 0;
printf("请输入两个操作数:");
scanf("%d %d", &x, &y);
ret = pf(x, y);
printf("%d\n", ret);
}因为传过来的是函数的地址,所以要使用一个指针来接受,这就是一个函数指针。
5.完整代码展示
#include<stdio.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 Wul(int x, int y)//乘法函数
{
return x * y;
}
int Div(int x, int y)//除法函数
{
return x / y;
}
//回调函数
void salc(int (*pf)(int, int))
{
int x = 0;
int y = 0;
int ret = 0;
printf("请输入两个操作数:");
scanf("%d %d", &x, &y);
ret = pf(x, y);
printf("%d\n", ret);
}
int main()
{
int input = 0;
do
{
menu();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case 0:
printf("退出计算器\n");
break;
case 1:
salc(Add);
break;
case 2:
salc(Sub);
break;
case 3:
salc(Wul);
break;
case 4:
salc(Div);
break;
default:
printf("输入错误\n");
break;
}
} while (input);
return 0;
}边栏推荐
- [论文分享] VideoFlow: A Flow-Based Generative Model for Video
- Taking advantage of cloud-network integration, e-Surfing Cloud has paved the way for digital transformation for government and enterprises
- 固态硬盘接口类型介绍
- 浅谈混迹力扣和codeforces上的几个月
- Dream weaving prompt information prompt box beautification
- 针对时间的功能测试点,这里给你总结全面了
- 洛谷P4799 世界冰球锦标赛
- 1.0.0到1.0.2的底层数据库表的更新,需要再重新自建数据库吗?
- 指针常量和常量指针概述
- Technical life | How to draw a big picture of business
猜你喜欢

WIFi 开关控制实现-ESP8266 物联网 android studio arduino QT多线程服务器

HDF驱动框架的API(3)

监控易火星版即将亮相:分布式运维帮助TOP3000大企业跨越管理鸿沟

载20(S)-人参皂苷/细胞穿膜肽-单克隆抗体-载丝裂霉素白蛋白纳米微球的制备
![[论文分享] VideoFlow: A Flow-Based Generative Model for Video](/img/da/eac862ab2457384846a0b6b20ea3a9.png)
[论文分享] VideoFlow: A Flow-Based Generative Model for Video

ETH Zurich重磅综述 | 人脸-素描合成:一个新的挑战

VSTO踩坑记录(1)- 从零开始开发outlook插件

Mobile Banking Experience Test: How to Get the Real User Experience

千万级QPS下服务如何才能平滑启动

Go 语言快速入门指南:第二篇 变量与常量
随机推荐
pydev debugger: warning: trying to add breakpoint to file that does not exist: /tmp/xxx
针对时间的功能测试点,这里给你总结全面了
golang刷leetcode滑动窗口(9) 颜色分类
LeetCode 2333. 最小差值平方和(贪心)
什么是会话劫持以及如何阻止它
CUDA+Pycharm-gpu版本+Anaconda安装
监控易火星版即将亮相:分布式运维帮助TOP3000大企业跨越管理鸿沟
被审稿人吐槽没有novelty!深度学习方向怎么找创新点?
[论文分享] VideoFlow: A Flow-Based Generative Model for Video
深入理解IO流(第一篇)
NIO之Selector执行流程
判断文件属主
开源一夏 | Web开发(七):登录实现及功能测试
来亲自手搭一个ResNet18网络
Smart Microelectronics Releases Low-Power MM32L0130 Series MCU Products
备战无人机配送:互联网派To C、技术派To B
MySQL命令(命令行方式,而非图形界面方式)
Win11dll文件缺失怎么修复?Win11系统dll文件丢失的解决方法
What skills are the most practical for college students in communications?
CWE4.8:2022年危害最大的25种软件安全问题