33,311
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include <string>
using namespace std;
string daoxu(string s)
{
int c=0;
string t="";
string::size_type i=0;
while (s[i]=='0')
{
i++;
}
t=t+s[i];
i++;
for(;i<s.size();i++)
{
for(string::size_type p=0;p<t.size();p++)
{
if(s[i]==t[p])
{
c=1;
break;
}
}
if(c!=1)
{
t=t+s[i];
}
c=0;
}
return t;
}
int main()
{
string num,t="";
char f;
cin>>num;
if(num[0]=='-')
{
f=num[0];
for (string::size_type i=num.size()-1;i>0;i--)
{
t=t+num[i];
}
cout<<f<<daoxu(t)<<endl;
}
else
{
for (string::size_type i=num.size()-1;i>=0;i--)
//问题好像出在这里,当i减为零之后继续循环,这时断点调试中显示i的值变成了 42949677292,
//然后继续循环就越界了,这是什么原因啊?
{
t=t+num[i];
}
cout<<daoxu(t)<<endl;
}
}