该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
--------------------------------------------------------------------------------
#include
#include
#include
float calculate(float a,char x,float b);
char pre(char a,char b);
int cla(char c);
void main()
{
char b[10];
float a[10];
float temp;
char str[20],c;
int i=0,j=0,k=0,m=0;
b[0]='#';
clrscr();
c=getchar();
while(c!='#'¦¦b[j]!='#')
{
if(c!='+'&&c!='-'&&c!='*'&&c!='/'&&c!='('&&c!=')'&&c!='#')
{
str[k]=c;
str[k+1]='\0';
k++;
m=1;
c=getchar();
}
else
{
if(m=1)
{
a[i]=atof(str);
i++;
k=0;
str[k]='\0';
}
m=0;
if(b[j]=='(')
{
if(c!=')')
{
j++;
b[j]=c;
c=getchar();
}
else if(c==')')
{
j--;
c=getchar();
}
}
else
{
switch(pre(b[j], c))
{
case'
case'=':j--;c=getchar();break;
case'>':temp=calculate(a[--i],b[j--],a[--i]);a[i]=temp;i++;break;
}
}
}
}
printf("=%f",a[0]);
}
float calculate(float a,char x,float b)
{
float z;
switch(x)
{
case'+':z=a+b;break;
case'-':z=a-b;break;
case'*':z=a*b;break;
case'/':z=a/b;break;
}
return(z);
}
char pre(char a,char b)
{
char z;
int temp;
temp=cla(a)+1-cla(b);
if(a=='('&&b==')') z='=';
else if(a=='#'&&b=='#') z='=';
else if(temp>0) z='>';
else if(temp<0) z='
else printf("fu hao wrong");
return z;
}
int cla(char c)
{
int z;
switch©
{case'+': z=4;break;
case'-': z=4;break;
case'*': z=6;break;
case'/': z=6;break;
case'(': z=8;break;
case')': z=2;break;
case'#': z=0;break;
}
return z;
}
作者:25760979