這裏出現的問題是
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;
}
}