这里出现的问题是
1.审题不清,全为0的情况没有看到。另外还要注意全为0时下标变成-1而不是0
2.考虑不周全,小数与分数,百分数并不相同。
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string s,ans;
cin>>s;
ans="";
int l2=s.size();
for(int i=0;i<l2;i++)
{
if(s[i]>='0'&&s[i]<='9')
ans+=s[i];
else
{
int l1=ans.size(),l,r,j;
for(j=l1-1;j>=0&&ans[j]=='0';j--);
r=j;
for(j=0;j<l1&&ans[j]=='0';j++);
l=j;
for(j=r;j>=l;j--)
cout<<ans[j];
if(r==-1)//全为0要输出0,注意这里r应该等于-1,而不是0
cout<<0;
cout<<s[i];
ans="";
}
}
if(ans!="")//当为分数和百分数时,到这里ans="",如果进行r=-1,会输出个0
{
int l1=ans.size(),l,r,j;
for(j=l1-1;j>=0&&ans[j]=='0';j--);
r=j;
for(j=0;j<l1&&ans[j]=='0';j++);
l=j;
for(j=r;j>=l;j--)
cout<<ans[j];
if(r==-1)
cout<<0;
}
}