| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 481 人关注过本帖
标题:关于中缀转后缀表达式的小问题、
只看楼主 加入收藏
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
收藏
得分:0 
别忘了结贴
2013-02-10 16:20
逝灬丿
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-2-5
收藏
得分:0 
改了之后输出方便多了、恩、支持多位数了、也用上switch了、格式个人感觉看起来舒服些了
程序代码:
//ºó׺(²»´øÀ¨ºÅ)Ö§³Ö¶àλÊý
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
main()
{
  int i=0,j=0; //i&iquest;&Oslash;&Ouml;&AElig;&Aacute;&Ugrave;&Ecirc;±&Otilde;&raquo;×&icirc;&cedil;&szlig;&micro;&atilde;&pound;&not;J&iquest;&Oslash;&Ouml;&AElig;&Ecirc;&auml;&sup3;&ouml;&Otilde;&raquo;
  int k=0; //&Aacute;&Ugrave;&Ecirc;±&Otilde;&raquo;&micro;&Auml;&Ecirc;&yacute;&Aacute;&iquest;
  char *p;
  char str[100];//&para;&Aacute;&Egrave;&euml;×&Ouml;·&ucirc;&acute;&reg;
  int str2[100];//&Aacute;&Ugrave;&Ecirc;±&Otilde;&raquo;
  char str3[100]={'\0'};//&Ecirc;&auml;&sup3;&ouml;&Otilde;&raquo;
  scanf("%s",str);
  for(p=str;;p++)//&Ouml;&cedil;&Iuml;ò&Ocirc;&shy;×&Ouml;·&ucirc;
  {
    if(*p>='0'&&*p<='9')
      str3[j++]=*p; //&frac12;&laquo;&Auml;&Ccedil;&cedil;&ouml;&Ecirc;&yacute;×&Ouml;·&Aring;&Egrave;&euml;&Ecirc;&auml;&sup3;&ouml;&Otilde;&raquo;
    else 
    {
      switch(*p)
      {
        case('+'):str2[i++]=11;k++;str3[j++]=' ';break;//&Oacute;&ouml;&micro;&frac12;·&ucirc;&ordm;&Aring;&Ouml;&reg;&ordm;ó&Ocirc;&Uacute;&AElig;&auml;
        case('-'):str2[i++]=12;k++;str3[j++]=' ';break;//&Ccedil;°&Atilde;&aelig;&frac14;&Oacute;&Egrave;&euml;&iquest;&Otilde;&cedil;&ntilde;
        case('*'):str2[i++]=21;k++;str3[j++]=' ';break;//i&Ograve;&Ntilde;&frac34;&shy;&Ouml;&cedil;&Iuml;ò&Iuml;&Acirc;&Ograve;&raquo;&cedil;&ouml;
        case('/'):str2[i++]=22;k++;str3[j++]=' ';break;//?+-*/·&frac12;±&atilde;&Egrave;&iexcl;&Oacute;à
      }                                                //±í&Ecirc;&frac34;&Iuml;&Egrave;&ordm;ó&frac14;&para;
      if(*p=='\0')                                   
      {
        switch(str2[0])
        {
          case(11):str3[j]='+';break;
          case(12):str3[j]='-';break;
          case(21):str3[j]='*';break;
          case(22):str3[j]='/';break;
        }
        break;
      }
      else if(k>=2)
      {
        if(str2[i-2]/10<str2[i-1]/10) //±&Egrave;&frac12;&Iuml;&Ocirc;&Euml;&Euml;&atilde;&Iuml;&Egrave;&ordm;ó&Egrave;&ocirc;&Iacute;&not;&frac14;&para;&raquo;ò&Otilde;&szlig;&ordm;ó&Otilde;&szlig;&acute;ó&Oacute;&Uacute;&Ccedil;°&Otilde;&szlig;
        {
          while(*(p+1)>='0'&&*(p+1)<='9')
          {
            p++;
            str3[j++]=*p; //&frac12;&laquo;&frac12;&Oacute;&Iuml;&Acirc;&Agrave;&acute;&Ecirc;&yacute;×&Ouml;·&Aring;&Egrave;&euml;&Ecirc;&auml;&sup3;&ouml;&Otilde;&raquo;
          }
          str3[j++]=' ';
          switch(str2[i-1])
          {case(21):str3[j++]='*';str3[j++]=' ';i--;k--;break;//&frac12;&laquo;&ordm;ó&Ograve;&raquo;&cedil;&ouml;·&Aring;&Egrave;&euml;&Ecirc;&auml;&sup3;&ouml;&Otilde;&raquo;
           case(22):str3[j++]='/';str3[j++]=' ';i--;k--;break;}//i&Ouml;&cedil;&raquo;&Oslash;&Ocirc;&shy;&Agrave;&acute;×&icirc;&cedil;&szlig;&Icirc;&raquo;×&Oacute;
          switch(str2[i-2])
          {case(11):str3[j++]='+';str3[j++]=' ';i--;k--;break;
           case(12):str3[j++]='-';str3[j++]=' ';i--;k--;break;}                                                        
        }
        else if(str2[i-2]/10>=str2[i-1]/10)
        {
          switch(str2[i-2])
          {
            case(11):str3[j++]='+';str3[j++]=' ';i--;k--;break;//&frac12;&laquo;&Ccedil;°&Ograve;&raquo;&cedil;&ouml;·&Aring;&Egrave;&euml;&Ecirc;&auml;&sup3;&ouml;&Otilde;&raquo;
            case(12):str3[j++]='-';str3[j++]=' ';i--;k--;break;//i&Ouml;&cedil;&raquo;&Oslash;&Ocirc;&shy;&Agrave;&acute;×&icirc;&cedil;&szlig;&Icirc;&raquo;×&Oacute;
            case(21):str3[j++]='*';str3[j++]=' ';i--;k--;break;//&Iuml;&Acirc;&acute;&Icirc;&Ouml;±&frac12;&Oacute;&cedil;&sup2;&cedil;&Ccedil;
            case(22):str3[j++]='/';str3[j++]=' ';i--;k--;break;
          }
          str2[i-1]=str2[i];
        }
      }
    }
  }
  printf("%s",str3);
  getch();
  return 0;
}
2013-02-10 16:25
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
收藏
得分:0 
注释变成了乱码哦
2013-02-10 22:40
快速回复:关于中缀转后缀表达式的小问题、
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014985 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved