请问为什么小数反转、分数反转、百分数反转什么也没有输出???是整个字符串都被删了吗?
代码:
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
string s;
cin >> s;
if ((int)s.find('.') != -1) // 小数反转
{
string a, b;
a = s.substr(0, s.find('.')); // 获取整数部分
b = s.substr(s.find('.') + 1, s.length()); // 获取小数部分
reverse(a.begin(), a.end()); // 反转
reverse(b.begin(), b.end()); // 反转
s = a + '.' + b;
for (int i = 0; ; ) // 去掉前导0
{
if (s[i] == '0')
{
s.erase(i); // 删除前导0
}
else break;
}
for (int i = s.length() - 1; i >= 0; i--) // 去掉后导0
{
if (s[i] == '0')
{
s.erase(i); // 删除后导0
}
else break;
}
}
else if ((int)s.find('/') != -1) // 分数反转
{
string a, b;
a = s.substr(0, s.find('/')); // 获取整数部分
b = s.substr(s.find('/') + 1, s.length()); // 获取小数部分
reverse(a.begin(), a.end()); // 反转
reverse(b.begin(), b.end()); // 反转
s = a + '/' + b;
for (int i = 0; ; ) // 去掉分母前导0
{
if (s[i] == '0') s.erase(i); // 去掉分母前导0
else break;
}
for (int i = s.find('/') + 1; i < s.length(); i++) // 去掉分子前导0
{
if (s[i] == '0') s.erase(i); // 去掉分子前导0
else break;
}
cout << s << endl;
}
else if ((int)s.find('%') != -1) // 百分数反转
{
s.erase(s.find('%'));
reverse(s.begin(), s.end());
s = s + '%';
for (int i = 0; ; ) // 去掉前导0
{
if (s[i] == '0') s.erase(i); // 去掉前导0
else break;
}
cout << s << endl;
}
else // 整数反转
{
reverse(s.begin(), s.end());
for (int i = 0; ; ) // 去掉前导0
{
if (s[i] == '0') s.erase(i); // 去掉前导0
else break;
}
cout << s << endl;
}
return 0;
}
大佬们麻烦帮忙看看