菜鸟求救!!!!!!!!!!!!!!!!!!

xiaohao123456008 2003-06-23 11:41:39
我们要用c语言+(数据结构里的栈)编辑一个四则运算器
十万火急!!各位帅哥靓妹拉我一把不然我会死的很惨~!!!!
谢谢
...全文
20 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
WebDB 2003-06-24
  • 打赏
  • 举报
回复
上面的就是C啊,你想要的通过电子邮件寄给你吧。。。
WebDB 2003-06-24
  • 打赏
  • 举报
回复
怎么给退回来了?

Your mail cannot be delivered to the following address(es):

550 < xiaohao12345600@163.com >: Invalid User (RCPT TO: xiaohao12345600@163.com )

Please check the above address(es) and then try again.
xiaohao123456008 2003-06-24
  • 打赏
  • 举报
回复
那就谢谢大哥了
但是这个程序不能进行混合运算啊!!
我们要能进行混合运算的计算器 要考虑+,-,*,/,(,)的优先级
用到栈
我的邮箱是xiaohao12345600@163.com
万分感谢大哥 我们明天下午就要上“刑场”!!!
xiaohao123456008 2003-06-23
  • 打赏
  • 举报
回复
谢谢大哥了
我要的是栈的个位数混合运算器:例如1+(2/2-3*1)
用c语言 c++我不会 拜托了
十万火急
回帖的大哥哥继续帮忙啊
谢谢了
WebDB 2003-06-23
  • 打赏
  • 举报
回复
堆栈应用---四则运算计算器

实现四则运算是计算器的基本功能,这个例子是一个简单的四则运算的计算器。

运行时如下所示:
Arithmatic Operate Simulator
Please input first number:35
Please input first number:25
Choose oprator(+,-,*,/): *

Result: 875

一般计算器是所谓中缀式的,也就是先输入第一个运算数再输入运算符,之后才
输入第二个运算数。运算符在二个运算数的中间,因此自然数为中缀式。还有后
缀式计算器,也就是先输入第一个数,再输入第二个运算数,最后才输入运算符。
对于后缀式计算器来说,前面输入的二个运算数并未立即用到,而是要等到
运算符输入后,组成表达式进行计算。可见二个运算数必须先存储在堆栈中,等
到输入了运算符之后,再从堆栈中取出先前放入的数,而且取出后的顺序必须和
放入时的顺序一致。
定义计算器的堆栈结构
使用顺序栈,即用一维数组来模拟堆栈。
#define MAX 100
int stack[MAX];
int top=0;
因此程序中定义了长度为MAX的一维数组,这里用宏定义为常数100,我们可
以定义修改宏定义重新定义堆栈的大小。
整型数据top为栈顶指示,由于程序开始时堆栈中并无任何数据元素,因此top
被初始化为0。
定义了堆栈satck[MAX]后,就可以利用入栈操作存储先后的二个运算数。
int push(int i) /*存储运算数,入栈操作*/
{ if(top<MAX)
{ stack[++top]=i; /*堆栈仍有空间,栈顶指示上移一个位置*/
return 0;
}
else
{ printf("The stack is full");
return(ERR);
}
}

在调用函数push时,如果它的返回值为0,说明入栈操作成功,否则若返回值
为ERR(在程序中说明为-1),说明入栈操作失败。
从堆栈中取出运算数
当程序中读入了四则运算符后,就可以从堆栈中取出已经存入的二个数,构
成表达式,计算出结果。取出运算数的函数采用的是出栈算法,在本例中,
实现该算法的函数为pop():
int pop() /*取出运算数,出栈操作*/
{ int var; /*定义待返回的栈顶元素*/
if(top!=NULL)
{ var=stack[top--]; /*堆栈指示下移一个位置*/
return var; /*返回栈顶元素*/
}
else /*堆栈为空,给出错误信息,并返回出错返回值*/
printf("The stack is empty!\n");
return ERR;
}

有了堆栈存储运算数,后缀式计算器的设计就很简单了。以除法为例说明程
序的执行流程:
case '/':
b=pop();
a=pop();
c=a/b;
printf("\n\n\tThe result is %d\n",c);
printf("\n");
break;
程序判断输入的是除法后,就执行一述代码。首先接连二次调 用pop函数从堆栈
中读出先前输入的运算数,存入整型数a和b中,然后执行除法运算结果存入单元
c中。这时需要考虑究竟谁是被除数谁是除数。由二开始是先将被除数入栈,根
据堆栈‘先入后出’的原则,被除数应该是第二次调用pop函数得到的返回值,而
除数是第一次调 用pop函数得到的返回值。
最后程序打印出运算结果,并提示是否继结进行:
printf("\tContinue?(y/n):);
l=getch();
if(l='n')
exit(0);
如果回答是'n',那么结束程序,否则继续执行循环。

完整的代码如下:
#include<stdio.h>
#define MAX 100 /*定义堆栈的大小*/
int stack[MAX]; /*用一维数组定义堆栈*/
int top=0; /*定义堆栈指示*/

int push(int i)
{
if(top<MAX)
{ stack[++top]=i; /*堆栈仍有空间,栈顶指示上移一个位置*/
return 0;
}
else
{ /*堆栈已满,给出错误信息,返回出错指示*/
printf("The stack is full");
return ERR;
}
}

int pop() /*取出运算数,出栈操作*/
{
int var; /*定义待返回的栈顶元素*/
if(top!=NULL) /*堆栈中仍有元素*/
{ var=stack[top--]; /*堆栈指示下移一个位置*/
return var;
}
else /*堆栈为空返回错误信息*/
printf("The stack is empty!\n");
return ERR;
}

void main()
{
int m,n;
char l;
int a,b,c;
int k;
do
{ printf("\tArithmatic Operate Simulator\n"); /*给出提示信息*/
printf("\n\tPlease input first number:"); /*输入第一个运算数*/
scanf("%d",&m);
push(m); /*第一个运算数入栈*/
printf("\n\tPlease input second number:"); /*输入第二个运算数*/
scanf("%d",&n);
push(n); /*第二个运算数入栈*/
printf("\n\tChoose operator(+,-,*,/):");
l=getche(); /*输入运算符*/
switch(l)
{ case '+':
b=pop();
a=pop();
c=a+b;
printf("\n\n\tThe result is %d\n",c);
printf("\n");
break;
case '-':
b=pop();
a=pop();
c=a-b;
printf("\n\n\tThe result is %d\n",c);
printf("\n");
break;
case '*':
b=pop();
a=pop();
c=a*b;
printf("\n\n\tThe result is %d\n",c);
printf("\n");
break;
case '/':
b=pop();
a=pop();
c=a/b;
printf("\n\n\tThe result is %d\n",c);
printf("\n");
break;
printf("\tContinue?(y/n):"); /*提示是否结束?*/
l=getche();
if(l=='n')
exit(0);
}while(1);
}

(转载:http://bbs.xiakexing.com/cgi-bin/topic.cgi?forum=22&topic=29&show=0)
博乐—机器人表演 机器人演出的开拓者 www.boole-tech.com 1 DIY 机器人 第一课 制作机器人的基础 在论坛上经常可以看到有人说:"我是菜鸟,制作机器人需要什么基础?"。其 实我可以回答大家:"基础就是你首先要学好数理化",怎么样很意外吧!现在 我来给大家讲讲为什么这么说。机器人制作综合性很强,它涉及机械制造、计 算机、电子技术等很多领域,每一个领域都是以我们的数理化为基础的,还有就 是要充分利用互联网的资源自我学习。 以下是我在论坛发过的一篇贴子,希望大家用心体会。 高手的秘诀 1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想 出来 再参考别人的提示,你就知道自己和别人思路的差异。 2.别小家子气,买本书几十块都舍不得,你还学个 P。为了省钱看电子书,浪费的时间绝对 超过书的价值。当然如果查资料,只能看 PDF。 3.学习新的开发软件时,一定要看帮助手册。买的书不够全面。刚接触一个软件,什么都不 懂,就盲目的问东问西,让人看起来很幼稚。 4.不要蜻蜓点水,得过且过,细微之处往往体现实力。 5.把时髦的技术挂在嘴边,还不如把过时的技术记在心里。 6.看得懂的书,请仔细看;看不懂的书,请硬着头皮看。 博乐—机器人表演 机器人演出的开拓者 www.boole-tech.com 2 .别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍。 7.多实践,去焊板子、调试,去写去调,只用软件模拟,是永远成不了高手的。 8.保存好你做过的所有的源程序、PCB、原理图等----那是你最好的积累之一。 9.对于网络,还是希望大家能多利用一下,很多问题不是非要到论坛来问的, 首先你要学会 自己找答案,比如 google、百度都是很好的搜索引擎,你只要输入关键字就 能找到很多相 关资料,别老是等待别人给你希望,看的出你平时一定也很懒! 10 到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问题早就 有人问过了,你再问,别人已经不想再重复了, 做为初学者,谁也不希望自己的帖子没人回 的。 11,虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方,如果 你 总期望有高手总无偿指点你,除非他是你亲戚!! 讨论者, 起码是水平相当的才有讨论的说 法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你讨论呢。 什么样的人是浮躁的人? 浮躁的人容易问:我到底该学什么; ----踏踏实实的学点基本的吧?单片机不知道是什么就想去学 ARM? c 语言不会想搞 LINUX?别老是好高骛远。 浮躁的人容易问:谁有 xxx 源码?--(你给人家多少钱啊?自己的劳动白送你?) 浮躁的人容易说:跪求 xxx ---(就算网络也要点尊严吧?) 浮躁的人容易说:紧急求救---(其实只是个简单的课程设计) 浮躁的人容易说:有没有 xxx 中文资料?---一个字:懒。别说别的。E 文不行?谁不是 博乐—机器人表演 机器人演出的开拓者 www.boole-tech.com 3 从 ABC 学起的啊? 浮躁的人容易说:求 xxx,我的 email 是 xxx@xxx.com,然后消失 ---- 你以为你是大爷啊, 人 家请你吃饭,还要喂到你口里不成? 浮躁的人容易问:做单片机有钱途吗----只是为了钱,搞不好技术的,你去抢银行好了。 浮躁的人容易说:哪里有 xxx 芯片资料?(其实大部分资料网络上都有,但是偏偏来找人 问,懒!) 浮躁的人分两种:只观望而不学的人;只学而不坚持的人; 浮躁的人永远不是一个高手。 lamp 看完后明白了吧,恭喜!你已经迈出了第一步。 第一课就到这里,下课接着讲。 _________________ 第二课 机器人的组成 机器人一般是由以下模块组成: 1.语音模块 用于语音对话、语音控制。 2.灯光表达模块 用于机器人状态显示、感情表达(喜、怒、哀、乐) 3.控制模块 I/O+决策,即机器人的大脑,其控制能力及 AI 由编程者的水平决定。 博乐—机器人表演 机器人演出的开拓者 www.boole-tech.com 4 4.传感器模块 对外界环境的的感知。 5.电源模块 为机器人提供能源,常用有 3v、5v、6v、9v、12v。 6.减速电机 常用于机器人行走驱动,根据需要选择变比。 7.驱动模块 机器人的执行机构,常选用行模中的舵机。 8.视频模块 机器人的眼 9.机械模块 10.无线通讯模块 11.控制软件 一个简单的机器人是由单片机电路、红外传感器、减速电机+程序这是大多数人 认同的,但是我要向大家说这种认识是错误的,真正的机器人不是几片单机和 几台电脑就可以解决,关键就是'机器人'中这个'人'字,还需要我们一代代 的努力。 以上讲的有点简单,先写出。 --
本套餐将包括两个重磅性的课程与一个赠送学习的课程,分别为SpringBoot实战视频教程与RabbitMQ实战教程跟SSM整合开发之poi导入导出Excel。目的是为了让各位小伙伴可以从零基础一步一个脚印学习微服务项目的开发,特别是SpringBoot项目的开发,之后会进入第二个课程:RabbitMQ的实战,即消息中间件在实际项目或者系统中各种业务模块的实战并解决一些常见的典型的问题!核心的知识点分别包括 一、SpringBoot实战历程课程 (1)SpringBoot实战应用场景的介绍与代码实战 (2)发送邮件服务、上传下载文件服务、Poi导入导出Excel (3)单模块与多模块项目构建、项目部署打包、日志、多环境配置、lombok、validator以及mybatis整合实战跟多数据源实战 (4)Redis缓存中间件的实战与缓存雪崩跟缓存穿透等问题的解决实战 (5)RabbitMQ消息中间件在业务模块异步解耦、通信、消息确认机制以及并发量配置等的实战 二、RabbitMQ实战教程课程 (1)RabbitMQ的官网权威技术手册拜读,认识并理解各大专有名词,如队列,交换机,路由,死信队列,消息确认机制等等 (2)RabbitMQ在业务服务模块之间的异步解耦通信实战,如异步记录日志与发送邮件等 (3)商城系统抢单高并发情况下RabbitMQ的限流作用与代码实战 (4)消息确认机制与并发量配置并用来实战商城用户下单 (5)死信队列深入讲解与DLX,DLK,TTL等概念的讲解并用来实战 “支付系统用户下单后支付超时而失效其下单记录”实战 详情,各位小伙伴可以查看两个课程的目录。相信学完该套餐相关课程后,你的实战能力将大大提升!涨薪将不再遥遥无期! 最后,赠送的SSM整合开发之POI导入导出Excel目的是为了让各位小伙伴也可以学习Spring+SpringMVC+Mybatis整合开发的项目,让大家一对比SpringBoot与SPring的项目开发流程以及复杂程度!!! 相信学完之后,你会对SpringBoot爱不释手!!

7,388

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 数据仓库
社区管理员
  • 数据仓库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧