资源简介

使用c语言实现,将给定的运算表达式翻译成逆波兰表达式的形式

资源截图

代码片段和文件信息

#include
#include
char phrase[199]sign[100]num[100][100]tmp[100];
int ns_topn_top;

int main()
{
    freopen(“data.txt““r“stdin);
    int ij;
    gets(phrase);
    strcat(phrase“)“);
    n=strlen(phrase);
    n_top=s_top=0;
    sign[s_top]=‘(‘;
    for(i=0;i        if(phrase[i]>=‘0‘&&phrase[i]<=‘9‘){
            for(j=i;j=‘0‘&&phrase[j]<=‘9‘;j++)
                tmp[j-i]=phrase[j];
            tmp[j-i]=‘\0‘;
            strcat(num[n_top++]tmp);
            i=j-1;
        }
        else  if(phrase[i]==‘*‘||phrase[i]==‘/‘){
            while(sign[s_top]==‘*‘||sign[s_top]==‘/‘){
                num[n_top][0]=sign[s_top--];
                num[n_top++][1]=‘\0‘;
            }
            sign[++s_top]=phrase[i];
        }
        else if(phrase[i]==‘+‘||phrase[i]==‘-‘){
            while(sign[s_top]!=‘(‘){
                num[n_top][0]=sign[s_top--];
                num[n_top++][1]=‘\0‘;
            }
            sign[++s_top]=phrase[i];
        }
        else if(phrase[i]==‘(‘){
            sign[++s_top]=phrase[i];
        }
        else{
            while(sign[s_top]!=‘(‘){
                num[n_top][0]=sign[s_top--];
                num[n_top++][1]=‘\0‘;
            }
            s_top--;
        }
    }
    for(i=0;i      printf(“%s “num[i]);
    return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件         16  2009-12-21 15:20  data.txt

     文件       1394  2009-12-21 15:55  main.cpp

----------- ---------  ---------- -----  ----

                 1410                    2


评论

共有 条评论