#3 #7 #8 #11 #13 #19 RE #15 WA 下载了#3的数据自己跑是正确的,不知道为什么RE,15题的数据下载不了 做了很多注释,大佬康康吧,我应该没有写的很复杂
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a,b;
int i,j,k;
cin>>a;
//判断符号是否存在,及其存在位置
for(i=0;i<a.length();i++)
{
if(isdigit(a[i])==0)
{
break;
}
}
k=i;//用k保存符号的位置
if(i!=a.length())//存在符号时
{
b[i]=a[i];//先保存符号
i--;
for(j=0;i>=0;i--)//符号前的反转
{
b[j]=a[i];
j++;
}
j++;//在自加一次,跳过符号的位置
for(i=a.length()-1;i>k;i--)//符号后的反转
{
b[j]=a[i];
j++;
}
if((b[k]=='.'||b[k]=='/')&&a.length()-2!=k)//判断除法和小数, 以及小数有几位
{//除法和小数需要除去符号后的“0”,但是只有一位小数的时候不用除,故作此判断
//除掉符号后面的0
for(i=a.length()-1;i>k;i--)
{
if(b[i]!='0') break;
else b[i]=' ';
}
}
}
else//是整型时
{
i--;//之前i=长度,所以自减一次
for(j=0;i>=0;i--)
{
b[j]=a[i];
j++;
}
}
if(k!=1)//k=1时,只有一位数或者是符号前只有一位数,此时不用做判断
{
//判断首数字是否为0
for(i=0;i<a.length();i++)
{
if(b[i]!='0') break;//首数字不为0,直接跳出循环
else b[i]=' ';
}
}
//输出,遇到空格跳过
for(i=0;i<a.length();i++)
{
if(b[i]==' ') continue;
else cout<<b[i];
}
return 0;
}
不管能否解决,很感谢您能看完我的代码