(zhn)现在的位置Q?/strong> 跨考网频道考研报名正文

数据l构W三章设计题及参考答案[3]_跨考网

最后更新时_2011-11-18 13:34:23
辅导评Q?a target="_blank" rel="nofollow">暑期集训 在线咨询
复习(fn)紧张Q焦头烂额?逆风轻袭Q来跨考秋季集训营Q帮你寻Ҏ(gu)Q定Ҏ(gu)Q?/span> 了解一?>

 1. 从键盘上输入一个逆L兰表辑ּQ用伪码写出其求值程序。规定:逆L兰表辑ּ的长度不过一行,?/span>$W作入结束,操作C间用I格分隔,操作W只可能?/span>+?/span>-?/span>*?/span>/四种q算。例如:234 34+2*$?a target="_blank">׃师范大学 1999 ?/span> Q?/span>10分)?/span>

  【参考答案?/span>

  [题目分析]逆L兰表辑ּ(卛_~表达?/span>)求D则如下:讄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>/’及I格的判断,因此在结束处理数字字W的case后,不能加入break语句?/span>

跨考考研评

班型 定向班型 开班时?/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>

①凡本网注明“稿件来源:跨考网”的所有文字、图片和韌频稿Ӟ版权均属北京学博教育咨询有限公司Q含本网和跨考网Q所有,M媒体、网站或个h未经本网协议授权不得转蝲、链接、{帖或以其他Q何方式复制、发表。已l本|协议授权的媒体、网站,在下载用时必须注明“稿件来源,跨考网”,q者本|将依法q究法律责Q?/p>

②本|未注明“稿件来源:跨考网”的?囄Eg均ؓ(f)转蝲E,本网转蝲仅基于传递更多信息之目的Qƈ不意味着再通{载稿的观Ҏ(gu)证实其内容的真实性。如其他媒体、网站或个h从本|下载用,必须保留本网注明的“稿件来源”,q自负版权等法律责Q。如擅自改为“稿件来源:跨考网”,本网依法追I法律责仅R?/p>

③如本网转蝲E涉及版权等问题Q请作者见E后在两周内速来?sh)与跨考网联系Q电(sh)话:400-883-2220