单独测试没有问题,放到这道题提示越界,请大佬看下谢谢
#include <bits/stdc++.h>
using namespace std;
string s,p;
bool f;
stack<char>st;
int cura,curb;
int main()
{
cin>>s;
curb=s.size()-1;
int pos;
//符号前反转
for(pos=0;pos<s.size()&&s[pos]<='9'&&s[pos]>='0';pos++)
st.push(s[pos]);
while(!st.empty())
{
p+=st.top();
st.pop();
}
for(int j=0;p[j]=='0'&&cura<pos;j++)
cura++;
cout<<p.substr(cura,curb-cura+1)<<s[pos];
string p;
int cura=pos+1,curb=s.size()-1;
// 符号后反转
if(s[pos]>='9'||s[pos]<='0')
{
for(int i=pos+1;i<s.size();i++)
st.push(s[i]);
while(!st.empty())
{
p+=st.top();
st.pop();
}
if(s[pos]=='.')for(int j=s.size()-1;p[j]=='0'&&curb>pos+1;j--)//去后导零
curb--;
else
for(int j=pos+1;p[j]=='0'&&cura<s.size();j--)
cura++;
}
cout<<p.substr(cura,curb-cura+1);
return 0;
}