数据l构W三章设计题?qing)参考答案[3]_跨考网
1. 从键盘上输入一个逆L兰表辑ּQ用伪码写出其求值程序。规定:(x)逆L兰表辑ּ的长度不过一行,?/span>$W作入结束,操作C间用I格分隔,操作W只可能?/span>+?/span>-?/span>*?/span>/四种q算。例如:(x)234 34+2*$?a target="_blank">׃师范大学 1999 ?/span> Q?/span>10分)?/span>
【参考答案?/span>
[题目分析]逆L兰表辑ּ(卛_~表达?/span>)求D则如下:(x)讄q算数栈OPND,对表辑ּ从左到右扫描(d)Q当表达式中扫描到数Ӟ压入OPND栈。当扫描到运符Ӟ?/span>OPND退Z个数Q进行相应运,l果再压?/span>OPND栈。这个过E一直进行到d表达式结束符$Q这?/span>OPND栈中只有一个数Q就是结果?/span>
float expr( )
//从键盘输入逆L兰表辑ּQ以?/span>$’表C入结束,本算法求逆L兰式表达式的倹{?/span>
?/span>float OPND[30]; // OPND是操作数栈?/span>
init(OPND); //两栈初始化?/span>
float num=0.0; //数字初始化?/span>
scanf (?/span>%c?/span>,&x);//x是字W型变量?/span>
while(x!=?/span>$?/span>)
{switch
{case?/span>0?/span><=x<=?/span>9?/span>:while((x>=?/span>0?/span>&&x<=?/span>9?/span>)||x==?/span>.?/span>) //拼数
if(x!=?/span>.?/span>) //处理整数
{num=num*10+Q?/span>ord(x)-ord(?/span>0?/span>)Q?/span>; scanf(?/span>%c?/span>,&x);}
else //处理数部分?/span>
{scale=10.0; scanf(?/span>%c?/span>,&x);
while(x>=?/span>0?/span>&&x<=?/span>9?/span>)
{num=num+(ord(x)-ord(?/span>0?/span>)/scale;
scale=scale*10; scanf(?/span>%c?/span>,&x); }
}//else
push(OPND,num); num=0.0;//数压入栈Q下个数初始?/span>
case x=?/span> ?/span>:break; //遇空|l箋M一个字W?/span>
case x=?/span>+?/span>:push(OPND,pop(OPND)+pop(OPND));break;
case x=?/span>-?/span>:x1=pop(OPND);x2=pop(OPND);push(OPND,x2-x1);break;
case x=?/span>*?/span>:push(OPND,pop(OPND)*pop(OPND));break;
case x=?/span>/?/span>:x1=pop(OPND);x2=pop(OPND);push(OPND,x2/x1);break;
default: //其它W号不作处理?/span>
}//l束switch
scanf(?/span>%c?/span>,&x);//d表达式中下一个字W?/span>
}//l束whileQ?/span>xQ?/span>=?/span>$’)
printf(“后~表达式的gؓ(f)%f?/span>,pop(OPND));
}//法l束?/span>
[法讨论]假设输入的后~表达式是正确的,未作错误查。算法中拼数部分是核心。若遇到大于{于?/span>0’且于{于?/span>9’的字符Q认为是数。这U字W的序号减去字符?/span>0’的序号得出数。对于整敎ͼ每读入一个数字字W,前面得到的部分数要乘?/span>10再加新读入的数得到新的部分数。当d数点,认ؓ(f)数的整数部分已完Q要接着处理数部分。小数部分的数要除以10Q或10的幂敎ͼ变成十分位,癑ֈ位,千分位数{等Q与前面部分数相加。在拼数q程中,若遇非数字字W,表示数已拼完Q将数压入栈中,q且变?/span>num恢复?/span>0Q准备下一个数。这时对新读入的字符q入?/span>+’、?/span>-’、?/span>*’、?/span>/’及(qing)I格的判断,因此在结束处理数字字W的case后,不能加入break语句?/span>
2022考研初复试已l接q尾壎ͼ考研学子全面q入2023届备?/b>Q跨考ؓ(f)23考研的考生准备?0大课包全E准备、全q复?fn)备考计划、目标院校专业辅对{全真复试模拟练?fn)和全程针对性指|2023考研的小伙伴针也已经开始择校和复习(fn)了,跨考考研畅学5.0版本全新升Q无Z在校在家都可以更自如的完成你的考研复习(fn)Q?/a>暑假集训?/span>带来了院校专业初步选择Q明方向;考研备考全q规划,核心知识点入门;个性化制定备考方案,助你赢在赯U,早出发一点离成功更q一点!
考研院校专业选择和考研复习(fn)计划 | |||
2023备考学?/td> | 2023U上U下随时学习(fn) | 34所自划UK校考研复试分数U汇?/td> | |
2022考研复试最全信息整?/a> | 全国各招生院校考研复试分数U汇?/a> | ||
2023全日制封闭训l?/span> | 全国各招生院校考研调剂信息汇?/a> | ||
2023考研先知 | 考研考试U目有哪些? | 如何正确看待考研分数U? | |
不同院校相同专业如何选择更适合自己?/a> | 从就业说考研如何择专业? | ||
手把手教你如何选专业? | 高校研究生教育各学科门类排行?/a> |
相关推荐
跨考考研评
班型 | 定向班型 | 开班时?/td> | 高定?/td> | 标准?/td> | 评介绍 | 咨询 |
U季集训 | 冲刺?/td> | 9.10-12.20 | 168000 | 24800?/td> | 班面授+专业??+专业译֮向辅?协议加强评(高定?+专属规划{疑(高定?+_化答?复试资源(高定?+复试译(高定?+复试指导(高定?+复试班主?v1服务(高定?+复试面授密训(高定?+复试1v1(高定? | |
2023集训畅学 | 非定向(政英?数政qQ?/td> | 每月20?/td> | 22800?协议? | 13800?/td> | 先行阶在U课E?基础阶在U课E?强化阶在U课E?真题阶在U课E?冲刺阶在U课E?专业NҎ(gu)一对一评+班主dE督学服?全程规划体系+全程试体系+全程_化答?择校择专业能力定位体p?全年关键环节指导体系+初试加强?初试专属服务+复试全科标准班服?/td> |