首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
从键盘上输入一个逆波兰表达式,用伪码写出其求值程序。规定:逆波兰表达式的长度不超过一行,以$符作为输入结束,操作数之间用空格分隔,操作符只可能有+、~、*、/四种运算,例如:234—34+2 * $。
从键盘上输入一个逆波兰表达式,用伪码写出其求值程序。规定:逆波兰表达式的长度不超过一行,以$符作为输入结束,操作数之间用空格分隔,操作符只可能有+、~、*、/四种运算,例如:234—34+2 * $。
admin
2019-08-15
65
问题
从键盘上输入一个逆波兰表达式,用伪码写出其求值程序。规定:逆波兰表达式的长度不超过一行,以$符作为输入结束,操作数之间用空格分隔,操作符只可能有+、~、*、/四种运算,例如: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
学硕统考专业
相关试题推荐
《中国国民党改组宣言》发表的时间是()。
乾隆时期()明确规定了驻藏大臣监督办理西藏事务,地位与达赖、班禅相等,监督履行“金瓶掣签”等
西周的分封制相当发达,是西周的重要政治制度,也是西周历史的一个显著特点。根据所学知识,回答问题西周建立之后,派遣同姓贵族和异姓贵族及归顺的异族首领到各地区,建立国家以藩屏护卫周室,分别分在卫、鲁、唐、燕的贵族是()
以下()协议完成了从网卡到IP地址的映射。
(1)页面长度为1KB=210B,因此页内偏移地址占10位。主存大小为16KB=214B,所以物理地址占14位。0AC5H=0000101011000101B,除去后10位,得到页号为2,则查找页表可知物理块号为4,所以物理地址是0100101100
某计算机有8个主设备需要竞争总线的使用权,其设备号为0~7。现欲设计其判优控制方法,试回答下述问题。(1)集中式总线判优控制与分布式总线判优控制的区别是什么?(2)若采用集中式判优控制,则在链式查询、计数器定时查询和独立请求三种方式下,
设计一个算法,求无向图G(采用邻接表存储)的连通分量个数。
一个客户机利用FTP协议从服务器上下载文件,如下图所示为整个过程中协议交换的过程,请回答如下问题:(1)该协议层图中第四层协议是什么?(2)如果FTP客户端采用了LIST命令来获得FTP服务器上的文件列表,该列表采用什么端口传输?
出现下列的情况可能导致死锁的是()。
若x=103,y=-25,则下列表达式采用8位定点补码运算实现时,会发生溢出的是_______。
随机试题
下列情形中,属于犯罪预备的是()。
黏性土的塑性指数()。
某患者,因长期摄入维生素A不足而导致夜盲症,其发生的原因是
前列腺增生最严重的症状是
瘀血所致疼痛的特点是( )。
私营企业老板田某从税务机关领购增值税专用发票后,将其中的20余张先后卖给他人,后见增值税专用发票有利可图,就伪造了30张增值税发票并卖给他人。田某的行为构成何罪?
自动喷水灭火系统根据所使用喷头的型式,分为闭式自动喷水灭火系统和开式自动喷水灭火系统两大类,下列不属于闭式系统的是()。
股份公司一旦退市,证券公司不得为其交易提供中介服务。()
关于管理层次、管理幅度的说法正确的是()。
某计算机系统中共有3个进程P1、P2和P3,4类资源r1、r2、r3和r4。其中r1和r3每类资源只有1个实例,r2资源有2个实例,r4资源有3个实例。当前的资源分配如下。E={
最新回复
(
0
)