📄 expression.txt
字号:
// 123yr.cpp : Defines the entry point for the console application.
//
// A.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
char postexp[40];
void main ()
{
void trans(char exp[],char postexp[]);
int compvalue(char post[]);
char exp[40];
printf("请输入要求值的表达式:");
scanf("%s",exp);
int n;
trans(exp,postexp);
printf("转换为后缀表达式:%s\n",postexp);
n= compvalue(postexp);
}
void trans(char exp[],char postexp[])
{
struct
{
char data[100];
int top;
}op;
int i,j;
char ch;
op.top=-1;
i=0;
j=0;
ch=exp[i];
while(ch!='\0')
{
switch(ch)
{
case '(':
op.top=op.top+1;
op.data[op.top]=ch;
break;
case ')' :while(op.data[op.top]!='(')
{
postexp[j]=op.data[op.top];
op.top--;
j=j+1;
}
op.top--;
break;
case'+':while((op.top!=-1)&&(op.data[op.top]!='('))
{
postexp[j]=op.data[op.top];
op.top=op.top-1;
j=j+1;
}op.top=op.top+1;
op.data[op.top]=ch;
break;
case '-': while((op.top!=-1)&&(op.data[op.top]!='('))
{
postexp[j]=op.data[op.top];
op.top=op.top-1;
j=j+1;
} op.top=op.top+1;
op.data[op.top]=ch;
break;
case '*':
case '/': while((op.top!=-1)&&(op.data[op.top])=='*'||(op.data[op.top]=='/'))
{
postexp[j]=op.data[op.top];
op.top=op.top-1;
j=j+1;
}
op.top=op.top+1;
op.data[op.top]=ch;
break;
default:while (ch>='0'&&ch<='9')
{
postexp[j]=ch;
i=i+1;
ch=exp[i];
j=j+1;
}i=i-1;
postexp[j]='#';
j=j+1;
break;
}
i=i+1;
ch=exp[i];
}
while((op.top!=-1))
{
postexp[j]=op.data[op.top];
op.top=op.top-1;
j=j+1;
}
return;
}
int compvalue(char postexp[])
{
struct
{
int data[100];
int top;
}l;
l.top=-1;
int i,j,b[3];
int n=0;
char ch;
i=0;j=0;
ch=postexp[i];
while(ch!='\0')
{
switch(ch)
{
case'#':l.data[++l.top]=n;
n=0;
break;
case'/':j=0;
while(j<2)
{
b[j]=l.data[l.top--];
j++;
}
n=b[1]/b[0];
l.data[++l.top]=n;
n=0;
break;
case'*':j=0;
while(j<2)
{
b[j]=l.data[l.top--];
j++;
}
n=b[0]*b[1];
l.data[++l.top]=n;
n=0;
break;
case'-':j=0;
while(j<2)
{
b[j]=l.data[l.top--];
j++;
}
n=b[1]-b[0];
l.data[++l.top]=n;
n=0;
break;
case'+':j=0;
while(j<2)
{
b[j]=l.data[l.top--];
j++;
}
n=b[1]+b[0];
l.data[++l.top]=n;
n=0;
break;
default:n=n*10+ch-'0';
}
i=i+1;
ch=postexp[i];
}
while(l.top!=-1)
printf("表达式的值n=%d\n",l.data[l.top--]);
n=l.data[l.top--];
return n;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -