题解byqijitong
char c,a;
int f=1,now=1,k,b,x;//f表示这一项的系数的正负,x则为系数,n为等号在左或右, b为常数的值;
double ans;//解
bool r;//是否有系数
int main()
{
while(cin>>c)
{
if(c=='-') {b+=now*f*x;x=0;f=-1;r=0;}// 减号处理
if(c=='+') {b+=now*f*x;x=0;f=1;r=0;} //加号处理
if(c == '=') {b+=now*f*x;x=0;f=1;now=-1;r=0;}//等于号处理,位置改为-1
if(c>='a' && c<='z')//变量的处理
{
if(r!=0)
{
k+=now*f*x;x=0;
}
else k+=now*f;
a=c;r=0;
}
if(c>='0'&&c<='9') {x=x*10+c-'0';r=1;}//常量的处理
}
b+=now*f*x;//加上最后一项常数,是未知数则会加0
if(ans==-0.0) ans=0;//加特判
printf("%c=%.3lf",a,ans);//输出(保留三位小数)
return 0;
}