C语言编写一个计算器(附全源代码)

article/2025/4/24 12:54:05

这个计算器其实是我老师布置的一个c语言大作业,捉摸着搞了那么久的东西不能浪费了吧,于是我分享下我的代码和大概思路
给个关注点个赞,后续我会分享更多我们学生党的作业问题

白嫖党们先看代码,我就先上上全代码,干!
前言:
为了达到目的,首先自学了栈:按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。其次查阅多方面资料结合所学知识进行编写而成。

(1)InitStack(S)初始化:初始化一个新的栈。

(2)Empty(S)栈的非空判断:若栈S不空,则返回TRUE;否则,返回 FALSE。

(3)Push(S,x)入栈:在栈S的顶部插入元素x,若栈满,则返回 FALSE;否则,返回TRUE。

(4)Pop(S)出栈:若栈S不空,则返回栈顶元素,并从栈顶中删除该元 素;否则,返回空元素NULL。

(5)GetTop(S)取栈顶元素:若栈S不空,则返回栈顶元素;否则返回 空元素NULL。

(6)SetEmpty(S)置栈空操作:置栈S为空栈。
(7) 常以top = -1表示空栈。

进栈(PUSH)算法
①若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则作②);
②置TOP=TOP+1(栈指针加1,指向进栈地址);
③S(TOP)=X,结束(X为新进栈的元素)

退栈(POP)算法
①若TOP≤0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈,空则下溢;不空则作②);
②X=S(TOP),(退栈后的元素赋给X):
③TOP=TOP-1,结束(栈指针减1,指向栈顶)
(1)函数功能介绍及介绍:能够实现连续的运算,混合运算,基本上可以等同于手机上计算器。仅限于加减乘除的四则运算。(强调运算时的括号必须是英文版本的,否则运行会出错。写表达式也可以加上“=”和不加不影响运行结果,最终还是以回车进行结束得到结果)。如果能在visualc++运行,稍微调整一下,可以利用自带的功能设置一个界面,这样就可以完成跟手机自带那种计算器相同了。
加法运算:1+2回车可得3,连续运算1+2+3+4+5回车可得15
减法运算:1-2回车为-1,连续运算5-1-2回车得2
乘法:2_3回车6,连续运算2_3*4回车24

除法运算24/4回车6,24/2/2回车6、
混合运算:(5+2)*2回车14

(一)软件环境:Devc++

我用的这个软件哈,个人感觉这里功能简单,特别容易上手。看图说话,是不是很简单嘛,又不复杂。
在这里插入图片描述

(二)设计方案

根据自学所得栈进行数据和符号的存储再输出,先设立单独的数据栈符号栈,我们以top=-1为标准,判断其是否为空栈,当然也用到了学过的struct来构建栈,先把字符存进去再说,在里面我们要进行运算,然后再拿出来给我们看。于是我们就要四则运算,用switch四个case把加减乘除表达出来,这能进行简单的运算吧,那混合运算还带括号咋办,于是要用到判断优先级,加减,乘除分别同级,先左括号读到右括号我们要停止,这样就可以进行混合的运算了。后面我们经过调用前面设的函数想办法怎么把它输出来,我们就是要用到入栈顶什么的最后出栈,用个free(str)释放下内存打印出来得到结果。

(3)函数功能:

用到了第八章内容结构结合自学内容构造栈,switch表达式来判断优先级,主要用到的为自学的栈push进栈,pop出栈,top=-1划分是否为空字符,在前言写很清楚了。

(四)全代码:

#include<stdio.h>
#include<stdlib.h>/*数据栈*/
struct shuju   //struct结构体构建栈 
{int data[100];int top;
};/*符号栈*/ 
struct fuhao{char symbol[100];int top;
};void InitOperateNum(struct shuju *StackNum)    //数据栈非空 
{StackNum->top = -1;
}void InitOperateSymbol(struct fuhao *StackSymbol)    //符号栈非空 
{  StackSymbol->top = -1; 
}/*存入数据栈*/
void Inshuju(struct shuju *StackNum, int num)
{StackNum->top ++;StackNum->data[StackNum->top] = num;
}/*存入符号栈*/ 
void Infuhao(struct fuhao *StackSymbol, char ch)
{StackSymbol->top ++;StackSymbol->symbol[StackSymbol->top] = ch;
}/*读取数据栈*/
int Randshuju(struct shuju *StackNum)
{return StackNum->data[StackNum->top];
}/*读取符号栈*/
char Randfuhao(struct fuhao *StackSymbol)
{return StackSymbol->symbol[StackSymbol->top];
}/*从数据栈取出数据*/
int Putshuju(struct shuju *StackNum)
{int x;x = StackNum->data[StackNum->top];StackNum->top --;return x;
}/*从符号栈取出符号*/
char Putfuhao(struct fuhao *StackSymbol)
{char c;c = StackSymbol->symbol[StackSymbol->top];StackSymbol->top --;return c;
}/*符号优先级判断*/
int judge(char ch) {if(ch == '('){return 1; }if(ch == '+' || ch == '-') {return 2;}else if(ch == '*' || ch == '/') {return 3;}else if(ch == ')') {return 4;}
}/*四则运算*/
int Math(int v1, int v2, char c)
{int sum;switch(c) {case '+' : {sum = v1 + v2;break;}case '-' : {sum = v1 - 

http://chatgpt.dhexx.cn/article/caTlawXu.shtml

相关文章

抗量子加密:为什么你迫切需要它

作者 | John 翻译| Katie&#xff0c;责编 | 晋兆雨 出品 | AI科技大本营 头图 | 付费下载于视觉中国 第二次世界大战把间谍活动带到了最前线&#xff0c;这是网络安全的先兆&#xff0c;正如现代世界所看到的那样。诸如量子计算机之类的技术进步使我们必须将这场打击网络犯罪的…

量子计算机的加密安全性,公钥加密机制被量子计算机攻破,传统加密方式不再安全...

如今市场上不乏各种加密和解密方案,然而,根据研究人员表示,针对那些仅取决于质因子分解难度的方案已经逐渐不适用了。 根据美国麻省理工学院(MIT)研究学者与奥地利因斯布鲁克大学(University of Innsbruck)原型专家表示,目前所使用的“公钥” (public-key)加密方式最终将被…

10年老台式机4分钟攻破量子加密算法,此前12年无人破解,核心原理来自25年前...

明敏 发自 凹非寺量子位 | 公众号 QbitAI 只花4分钟&#xff0c;就破解了量子加密算法的密钥。 用的还是一台有10年“高龄”的台式机。 完全破解也只需62分钟&#xff0c;CPU单核即可搞定。 两位鲁汶大学学者基于数学理论破解量子加密算法的消息&#xff0c;最近轰动了密码学界…

应用量子数据加密的一些问题

前言 最近有看到一本关于量子科技的书籍&#xff0c;里面对量子计算在信息安全领域的应用提出了以下几个问题&#xff0c;我把它们搬运到CSDN&#xff0c;欢迎大家前来讨论&#xff01; 应用量子数据加密的一些问题 1、人类可以利用量子物理学来创造出绝对安全的通信网络吗&…

量子计算会摧毁区块链和加密货币吗?

2019年&#xff0c;谷歌高调宣布了成功演示“量子霸权”&#xff0c;一个包含53个有效量子比特的处理器“西克莫”&#xff0c;用200秒完成传统超级计算机Summit需1万年解决的问题&#xff0c;着实让人惊叹。可是&#xff0c;“量子霸权”还没有捂热&#xff0c;竞争对手IBM就出…

安全加密 - 加密算法 - 摘要算法 - 秘钥交换协议 - 量子加密

摘要算法&#xff08;单向加密算法&#xff09; 单向加密算法 : 用于提取数据特征码。又称数据摘要算法。 数据摘要算法,比较常见的有: md5, sha256&#xff0c;CRC-32 秘钥交换协议 由Diffie-Hellman算法实现,它其实是两个牛人的名字组合. 叫做Diffie-Hellman协议(或叫算法…

如何保护今日加密数据以抵抗量子攻击?

1. 引言 随着量子计算机的发展&#xff0c;需增强当前加密系统抵抗量子攻击的能力&#xff0c;避免未来的量子计算机解密当今的密文数据。在大量新闻中提及Lattice-based cryptography&#xff08;基于格的密码学&#xff09;。 2. 密码学及数学难题 加密机制的安全在于破解…

谷歌在Chrome浏览器中推进抗量子加密技术

近日&#xff0c;Chromium博客上发表的一篇博文称&#xff0c;为了加强网络安全&#xff0c;应对迫在眉睫的量子计算机威胁&#xff0c;谷歌各个团队密切合作&#xff0c;为网络向抗量子密码学的过渡做好准备。 谷歌的Chrome团队在博客中写道&#xff0c;该项目涉及修订技术标准…

基于量子同态加密的安全多方凸包协议

摘要安全多方计算几何(SMCG)是安全多方计算的一个分支。该协议是为SMCG中安全的多方凸包计算而设计的。首先&#xff0c;提出了一种基于量子同态加密的安全双方值比较协议。由于量子同态加密的性质&#xff0c;该协议可以很好地保护量子电路执行过程中数据的安全性和各方之间的…

基于光子实验的指数级加速的量子同态加密理论

前言 量子计算机不仅有望在某些重要任务上超越经典计算机&#xff0c;而且还能保护计算的隐私。例如&#xff0c;盲量子计算协议支持安全委托量子计算&#xff0c;其中客户端可以保护其数据和算法的隐私&#xff0c;不受分配来运行计算的量子服务器的影响。然而&#xff0c;这…

NIST宣布推出前4种抗量子加密算法

近日&#xff0c;美商务部技术研究院&#xff08;NIST&#xff09;选择了第一套抗量子加密算法&#xff0c;旨在“抵御未来量子计算机的攻击”。 后量子密码学&#xff08;PQC&#xff09;技术包括用于通用加密的CRYSTALS-Kyber算法&#xff0c;以及用于数字签名的CRYSTALS-Di…

量子图像加密解密

量子图像加密解密 量子灰度图像表示DRPE和量子加密与解密双随机相位编码技术(DRPE)量子图像加密量子图像解密 在老师的建议下补充一点有关量子图像加密和解密的内容。 我是一只正在不断学习、希望早日成为小白的小小白&#xff0c;有什么错误欢迎大家批评指正&#xff0c;喜欢…

基于量子同态加密的改进多方量子私有比较

摘要量子同态加密在隐私保护方面具有明显的优势。本文提出了一种改进的基于量子同态加密的多方量子私钥比较协议。首先&#xff0c;引入可信密钥中心&#xff0c;安全辅助加密密钥的分发和解密密钥的更新&#xff0c;同时防止恶意服务器发布虚假结果的攻击;在保证所有参与者得到…

抗量子加密:为什么迫切需要它

作者 | John 翻译| Katie&#xff0c;责编 | 晋兆雨 来源 | AI科技大本营 头图 | 付费下载于视觉中国 第二次世界大战把间谍活动带到了最前线&#xff0c;这是网络安全的先兆&#xff0c;正如现代世界所看到的那样。诸如量子计算机之类的技术进步&#xff0c;使我们必须将这场打…

基于量子同态的安全多方量子求和加密

摘要安全多方计算在经典密码学中一直扮演着重要的角色。量子同态加密(QHE)可以在不解密的情况下对加密数据进行计算。目前&#xff0c;大多数协议使用半诚实的第三方(TP)来保护参与者的秘密。我们使用量子同态加密方案代替TP来保护各方的隐私。在量子同态加密的基础上&#xff…

初步认识量子加密

据说&#xff1b; 未来加密技术如量子密码、DNA密码、混沌密码等密码新技术目前正处于探索与研究之中。 来看一下 量子加密&#xff1b; 看到 量子加密 这词&#xff0c;作为一名程序员&#xff0c;我们首先会疑惑&#xff1b; 这东西究竟是一种算法&#xff0c;还是一种物理…

中国电信推出量子加密通话;中国建成世界最大量子通信网络|全球量子科技与工业快讯第四期

图片来源&#xff1a;AP 中国电信推出量子加密电话服务 |来源&#xff1a;South China Morning Post 中国电信近日在中国安徽省推出了受量子加密保护的通信服务。为了开通这项服务&#xff0c;用户必须前往中国电信的实体店面更换SIM卡。这项服务也需要一个“量子安全通话”…

量子加密_量子强化加密协议

量子加密 I recently did some work as a side project for company called Patero that involved creating quantum hardened prototype of one of their products. This post discusses how to secure state-of-the-art cryptographic protocols against attacks from (futur…

量子通信技术、量子加密技术

量子是什么&#xff1f; 所谓量子&#xff0c;是构成物质的最基本单元&#xff0c;是能量&#xff0c;动量等物理量最小单位&#xff0c;不可分割。像电子、光子等构成物质的基本粒子&#xff0c;统称为量子。 除了不可分割性&#xff0c;量子还具有不可克隆&#xff08;复制…

浅见:关于量子密码学

浅见&#xff1a;关于量子密码学 量子密码学是目前使用的加密技术的下一个篇章。这部分加密起源于物理原理&#xff0c;涉及物理机制和计算能力。这种计算能力和量子机制被用来创建两个强大的安全系统&#xff0c;量子密钥分发和量子安全密码学。 我们将在本指南中详细介绍量子…