首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
从键盘上输入一个逆波兰表达式,用伪码写出其求值程序。规定:逆波兰表达式的长度不超过一行,以$符作为输入结束,操作数之间用空格分隔,操作符只可能有+、~、*、/四种运算,例如:234—34+2 * $。
从键盘上输入一个逆波兰表达式,用伪码写出其求值程序。规定:逆波兰表达式的长度不超过一行,以$符作为输入结束,操作数之间用空格分隔,操作符只可能有+、~、*、/四种运算,例如:234—34+2 * $。
admin
2019-08-15
35
问题
从键盘上输入一个逆波兰表达式,用伪码写出其求值程序。规定:逆波兰表达式的长度不超过一行,以$符作为输入结束,操作数之间用空格分隔,操作符只可能有+、~、*、/四种运算,例如:234—34+2 * $。
选项
答案
逆波兰表达式(即后缀表达式)求值规则如下:设立运算数栈OPND,对表达式从左到右扫描(读入),当表达式中扫描到数时,压入OPND栈。当扫描到运算符时,从OPND退出两个数,进行相应运算,结果再压入OPND栈。这个过程一直进行到读出表达式结束符$,这时OPND栈中只有一个数,就是结果。 float expr(){ //从键盘输入逆波兰表达式,以'$'表示输入结束,本算法求逆波兰表达式的值 float OPND[30]; //OPND是操作数栈 init(OPND); //两栈初始化 float num=0.0; //数字初始化 scanf("%c",&x); //x是字符型变量 while(x!='$'){ switch(x){ case'0': case'1': case'2': case'3': case'4': case'5': case'6': case'7': case'8': case'9': while((x>='0'&&x<='9')∣∣x==.')//拼数 if(x∣='.'){num=num * 10+(ord(x)-ord('0'));scanf("%c",&x);}//处理整数 else{ //处理小数部分 scale=10.0;scanf("%c",&x); while(x>='0'&&x<='9'){ num=num+(ord(x)一ord('0'))/scale; scale=scale*10;scanf("%c",&x); } }//else push(OPND,num);hum=0.0; //数压入栈,下个数初始化 case'':break; //遇空格,继续读下一个字符 case'+':push(OPND,pop(OPND)+pop(OPND));break; case'一':xl=pop(OPND):x2=pop(OPND);push(OPND,x2-x1);break; case'*':push(OPND,pop(OPND) * pop(OPND)):break: case'/:xl=pop(OPND);x2=pop(OPND);push(OPND,x2/x1);break; default; //其他符号不作处理 }//结束switch scanf("%c",&x); //读入表达式中下一个字符 }//结束while(x!='$’) printf("后缀表达式的值为%f")i pop(OPND); } 提示:假设输入的后缀表达式是正确的,未作错误检查。算法中拼数部分是核心。若遇到大于等于'0'且小于等于'9'的字符,认为是数。这种字符的序号减去字符'0'的序号得出数。对于整数,每读入一个数字字符,前面得到的部分数要乘上10再加新读入的数得到新的部分数。当读到小数点时,认为数的整数部分已完,要接着处理小数部分。小数部分的数要除以10(或10的幂数)变成十分位、百分位、千分位数等,与前面部分数相加。在拼数过程中,若遇非数字字符,表示数已拼完,将数压入栈中,并且将变量num恢复为0,准备下一个数。这时对新读入的字符进入'+'、'一、'*'、'/'及空格的判断,因此在结束处理数字字符的case后,不能加入break语句。
解析
转载请注明原文地址:https://kaotiyun.com/show/8OCi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
鸦片战争失败后,西方列强强迫清政府签订了中国近代史上第一批不平等条约。鸦片战争是中国历史的转折点,对中国历史产生了深远的影响。中国开始逐步沦为半殖民地半封建社会。据此回答问题:西方列强在近代中国攫取的第一块殖民地和第一个租界是()
下列各项内容和王羲之的书法成就有关的是()。①开始把字体由隶书转化为楷书②书法代表作有《兰亭序》、《黄庭经》等③他博彩众长,世称“书圣”④其子王献之书法造诣也极高,父子合称“二王”
下列选项中,不属于西汉农业发展状况的是()
某机字长32位,它的存储容量为256MB,按字节编址,则它的寻址范围大小为()。
荷兰国旗问题:设有一个仅红、白、蓝三种颜色的条块组成的条块序列,请编写一个时间复杂度为O(n)的算法,使得这些条块按红、白、蓝的顺序排好,即排成荷兰国旗图案。
设算术表达式由字符串b表示,其中可以包括三种括号:圆括号、方括号以及花括号,嵌套的顺序随意,如:“{[()]()}”。试编写算法,实现判定给定表达式中所含括号是否正确配对的出现。
设有一个双向链表h,每个结点中除有prior,data和next三个域外,还有一个访问频度域freq,在链表被起用之前,每个结点中的freq域都被初始化为零。每当进行LocateNode(h,x)运算时,令元素值为x的结点中freq域中的值加一,并调整表中
以下关于图的说法正确的是()。.I在一个有向图的拓扑序列中,若顶点a在顶点b之前,则图中必有一条弧Ⅱ若一个有向图的邻接矩阵中对角线一下元素均为O,则该图的拓扑序列必定存在Ⅲ在.AOE网中一定只有一条
在下面的应用中,通常使用栈的是()。 Ⅰ递归调用Ⅱ括号匹配Ⅲ表达式求值
已知操作符包括‘+’、‘-’、…、‘/’‘(’和‘)’。将中缀表达式a+b-a*((c+d)/e-f)+g转换为等价的后缀表达式ab+acd+e/f-*-g+时,用栈来存放暂时还不能确定运算次序的操作符,若栈初始时为空,则转换过程中同时保存在栈中的操作符的
随机试题
在Excel2010中,删除工作表是永久删除,无法撤消删除操作。()
患者邓某,口干唇燥,口渴多饮,尿频量多,浑浊如脂膏,时或烦躁,遗精,舌质红,脉象细数。治疗选用
有一项研究对565名年龄在7至11岁之间的孩子和他们的家长进行了问卷调查,结果显示,受到家长过多表扬的孩子更容易展露出自恋的特质,而不是自信。又有一项对85个研究进行的综合分析显示,在西方世界,自恋的青少年人数不断上升,这在某种程度上可能与西方文化注重对孩
李某在证券交易所开立账户,委托该证券公司代为买卖证券。一日上午,李某以书面方式委托证券公司买人某股票。证券公司的工作人员刘某执行了李某的委托指令,但是在操作中因为刘某违反交易规则进行操作,给李某造成了1万元的损失。那么对此损失:
某城市道路改建工程,地处交通要道,拆迁工作量大。业主通过招标选择了工程施工总承包单位和拆迁公司。在上半年施工进度计划检查中,该工程施工项目经理部出示了以下资料:①桩基分包商的桩位图(注有成孔/成桩记录)及施工日志;②项目经理部的例会记录及施工日志;③施工总
黄河流域半坡彩陶纹饰最多的是()。
甲、乙两人分别从A、B两地同时出发,相向而行,乙的速度是甲的,两人相遇后继续前进,甲到达B地,乙到达A地立即返回,已知两人第二次相遇的地点距离第一次相遇的地点是3000米,求A、B两地的距离?
根据材料回答问题:(人大2018年研)材料:2017年8月31日,在陕西省榆林市第一医院绥德院区住院部,产妇马某某坠楼身亡。有媒体报道称,原计划顺产的产妇马某某曾多次提出剖宫产的请求,均未获得同意,因疼痛难忍跳楼坠亡。对于产妇
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。请在程序的
Inthispartofthetestyouareaskedtogiveashorttalkonabusinesstopic.Youhavetochooseoneofthetopicsfromthetw
最新回复
(
0
)