【C语言】计算器

news/2024/11/17 5:24:11/

 🚀write in front🚀


🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎
🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家^星级博主~掘金 ⇿ InfoQ创作者~周榜77»总榜2226🏅
🆔本文由 謓泽 原创 CSDN首发🙉如需转载还请通知
📝个人主页:打打酱油desuCSDN博客💬
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
📣系列专栏:
YY_謓泽的博客-CSDN博客[〇~①]🎓
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩 

🍊计算器の目录🍏

 🚀write in front🚀

🤔实现逻辑

😐普通代码实现 

🙄高级代码实现

😮运行结果

😋最后

🤔实现逻辑

首先创建菜单(menu),把我们需要实现的功能打印到运行栏屏幕上。

1、实现加法计算

2、实现减法计算

3、实现除法计算

4、实现乘法计算

0、退出计算器

当然以上都是属于最基本的计算,你当然还可以实现一些其它计算。例如:

位运算(按位与、按位或、按位异或)

左移操作符、右移操作符、取模、开平方等...

由于道理都是一样的只是 return 返回值就可以了在这里不再多述,也有些可以使用库函数直接引用即可像sqrt()、pow()等......


😐普通代码实现 

计算器⇲の普通代码实现如下⇩

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void menu()
{printf("|-------- 计算器 --------|\n");printf("|-------★ 1.Add ★------|\n");printf("|-------★ 2.Sub ★------|\n");printf("|-------★ 3.Mul ★------|\n");printf("|-------★ 4.Div ★------|\n");printf("|-------★ 0.Exit★------|\n");
}
double Add(double x, double y)
{return x + y;
}
double Sub(double x, double y)
{return x - y;
}
double Mul(double x, double y)
{return x * y;
}
double Div(double x, double y)
{return x / y;
}
int main(void)
{menu();double x = 0.0;double y = 0.0;double ret = 0.0;int input = 0;do{printf("请输入菜单界面(input):");scanf("%d", &input);switch (input){case 0:printf("Exit!\n");break;case 1:printf("请输入两个数字:");scanf("%lf %lf", &x, &y);ret = Add(x, y);printf("ret = %.2lf\n", ret);break;case 2:printf("请输入两个数字:");scanf("%lf %lf", &x, &y);ret = Sub(x, y);printf("ret = %.2lf\n", ret);break;case 3:printf("请输入两个数字:");scanf("%lf %lf", &x, &y);ret = Mul(x, y);printf("ret = %.2lf\n", ret);break;case 4:printf("请输入两个数字:");scanf("%lf %lf", &x, &y);ret = Div(x, y);printf("ret = %.2lf\n", ret);break;default:printf("你输入的数字错误,请重新输入!\n");break;}} while (input);return 0;
}

🙄高级代码实现

计算器⇲の高级代码实现如下⇩

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void menu()
{printf("|-------- 计算器 --------|\n");printf("|-------★ 1.Add ★------|\n");printf("|-------★ 2.Sub ★------|\n");printf("|-------★ 3.Mul ★------|\n");printf("|-------★ 4.Div ★------|\n");printf("|-------★ 0.Exit★------|\n");
}
double Add(double x, double y)
{return x + y;
}
double Sub(double x, double y)
{return x - y;
}
double Mul(double x, double y)
{return x * y;
}
double Div(double x, double y)
{return x / y;
}
int main(void)
{menu();double(*p[5])(double, double) = { NULL, Add, Sub, Mul, Div };//函数指针数组!int input = 0;do{printf("请输入菜单界面上数字:");scanf("%d", &input);if (input >= 1 && input <= 4){double x = 0.0, y = 0.0;printf("请输入两个数字:");scanf("%lf %lf", &x, &y);double ret = (*p[input])(x, y);//下标引用printf("ret = %.2lf\n", ret);printf("-------\n");}else if (input == 0){printf("Exit退出\n");break;}else{printf("你输入数字不在范围之内,请重新输入!\n");}} while (input);return 0;
}

😮运行结果

加法运行结果↓

减法运行结果↓ 

乘法运行结果↓

除法运行结果↓

退出exit↓

输入错误↓


😋最后

实现C语言这种计算器简易的是比较容易的,在这里我们使用的普通代码和高级代码的实现本计算器初学者可能会用到普通代码的实现,但是如果你学过函数指针数组你就可以用这种高级代码的实现方法来做本题,不会指针或者不太了解可以看看博主写过的指针系列的文章如下所示↓

🍏⒈⇨【C语言】万字速通初阶指针 zero → One_謓泽的博客-CSDN博客

🍊⒉⇨【C语言】⒉万字带你玩转高阶指针『0»1』_謓泽的博客-CSDN博客

如果你这里,不用函数指针数组去实现实际上也可以,但是代码量会冗余。推荐使用函数指针的方法来进行实现,效率大大滴提高。

注意这样写它的函数参数必须是统一的才可以。

看到这里了,点个赞吧😋😋😋


http://www.ppmy.cn/news/163712.html

相关文章

“集成”革命下,华帝、方太的理想之路

四方食事&#xff0c;不过一碗人间烟 火。在快节奏的如今&#xff0c;留得空闲下厨似乎已经成为了生活中的“奢 侈”。而今&#xff0c;厨房电器市场的“集成”革命正在逐步填补这些硬件缺口&#xff0c;让大家都能在厨房这方天地中拥有属于自己独一无二的人间烟 火。 所谓厨房…

计算器——位运算(c语言)

目录 前言 一、位运算是什么 二、实现位运算计算器 1.加法 2、减法 三、乘法 4、除法 总结 前言 对于计算器&#xff0c;可能很多同学都会写&#xff0c;毕竟那是最基础的东西&#xff0c;那今天我来介绍个不那么基础的计算器。记住不要出现 - * /&#xff0c;我们的宗旨是&am…

华帝i11010吸油烟机怎么样?

华帝&#xff08;VATTI&#xff09;i11010是一个不错的选择&#xff0c;怎么样呢&#xff1f;不锈钢侧吸烟机是一个不错的选择&#xff0c;怎么样呢&#xff1f;金属银网上买吸油烟机绝对超值&#xff0c;但是 杂志采访让人放心的客人^没有把这好点子瞎扯淡多听听顾客没有上班了…

private大模型-nvm

报错GLIBC_2.28’ not found (privateGPT-py38) rootk8s-master01:/nfs/jett/privateGPT-main/client# npm install node: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.28’ not found (required by node) 出现该错误的原因是当前的Node.js版本需要glibc2.28库&#x…

SVN客户端的下载和安装(图文超详细)

目录 0.准备工作 1.SVN客户端安装包安装 2.安装语言包 0.准备工作 博主安装环境&#xff1a;windows x86 SVN客户端下载地址&#xff1a;下载 SVN (tortoisesvn.net) 【下载地址中需下载符合电脑版本的安装包&#xff0c;以及语言包】 注&#xff1a;下载两个包后&#…

光栅尺磁栅尺编码器AB信号输入4倍频脉冲计数器,Modbus RTU模块

IBF153远程I/O模块&#xff0c;可以用来测量1路光栅尺磁栅尺编码器信号。 信号输入 1路光栅尺磁栅尺编码器信号输入&#xff0c;可接NPN和PNP信号&#xff0c;通过命令设置输入类型。 通讯协议 通讯接口&#xff1a; 1路标准的RS-485通讯接口。 通讯协议&#xff1a;支持两…

mybatis-plus 之 ServiceImpl 的用法

com.baomidou.mybatisplus.extension.service.impl.ServiceImpl 类是 MyBatis-Plus 框架提供的默认服务实现类&#xff0c;它继承了 com.baomidou.mybatisplus.extension.service.impl.BaseServiceImpl 类并实现了一些常用的方法。下面是一些在 ServiceImpl 类中常见的方法&…

技术的交流 思想的碰撞|2023 开放原子全球开源峰会 TOC 面对面分论坛即将启幕

由开放原子开源基金会主办的 2023 开放原子全球开源峰会 TOC 面对面分论坛即将于 6 月 13 日在北京经开区北人亦创国际会展中心隆重举办。 作为开放原子开源基金会最高技术决策机构&#xff0c;TOC&#xff08;Technical Oversight Committee&#xff09;汇聚了基金会单位的开…