社区讨论
萌新25分求助!!
P1553数字反转(升级版)参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lo2ak2vg
- 此快照首次捕获于
- 2023/10/23 10:41 2 年前
- 此快照最后确认于
- 2023/11/03 10:52 2 年前
请问为什么小数反转、分数反转、百分数反转什么也没有输出???是整个字符串都被删了吗?
代码:
CPP#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;
}
大佬们麻烦帮忙看看
回复
共 4 条回复,欢迎继续交流。
正在加载回复...