#include <iostream> #include <cstring> #include <iomanip> using namespace std; int main() { string str; cin>>str; int f=1,d=1; char c; long double k=0,b=0,num=0,ans; for(int i=0;i<str.length();i++) { if(str[i]>=‘0‘ && str[i]<=‘9‘) num=num*10+str[i]-48; if(str[i]>=‘a‘ && str[i]<=‘z‘) { if(i==0) k=1; c=str[i]; k=k+f*d*num; num=0; } if(str[i]==‘-‘) { b=b+f*d*num; num=0; f=-1; } if(str[i]==‘+‘) { b=b+f*d*num; num=0; f=1; } if(str[i]==‘=‘) { b=b+f*d*num; f=1; num=0; d=-1; } } if(num!=0) b=b+f*d*num; ans =-1*b/k; if(ans==-0) ans=0; cout<<c<<"="; cout<<setiosflags(ios::fixed)<<setprecision(3)<<ans<<endl; return 0; }
注意:eg a+2a=4 第一个a的k等于0 特例
eg -2=6y 等号右边f要变
原文:https://www.cnblogs.com/shiye-shiye/p/11761582.html