第六个测试点给我报错“Wrong Answer.wrong answer On line 1 column 9, read (ASCII 0), expected ..“ 测试数据六是:"84754765.322414"。 但是我自己运行出来的数据是有‘.’的。 剩下的错误点都是说我的'.''/'''%'这些是ascii 0
代码解释: 先判断了属于整数,分数,小数,百分数中的哪一种,再在if语句中找出那类,进行处理。
#include <iostream>
#include<string>
using namespace std;
int main()
{
string s,s1(25,'\0'),s2(25,'\0'),ss(25,'\0'),ss1(25,'\0');
cin>>s;
int n=s.length(),type=1,z;
for(int i=0;i<n;i++)
{
if(s[i]=='.')
{
type=2;
z=i;
}
else if(s[i]=='/') {
z=i; type = 3;
}else if(s[i]=='%')
type=4;
}
if(type==1)
{
if(s=="0")
{cout<<0;
return 0;}
for(int i=0;i<n;i++)
{
s1[i]=s[n-i-1];
}
while(s1[0]=='0')
{
s1.erase(0,1);
}
cout<<s1;
return 0;
}
else if(type==2)
{
s1=s.substr(0,z);
s2=s.substr(z+1,n-1-z);
for(int i=0;i<z;i++)
{
ss[z-i-1]=s1[i];
}
while(ss[0]=='0')
{
ss.erase(0,1);
}
if(s1=="0")
{cout<<0<<'.';
}
else
{
ss+='.';
}
for(int i=0;i<n-z-1;i++)
{
ss1[n-z-i-2]=s2[i];
}
if(s2=="0")
{
cout<<0;
return 0;
}
int l=n-z-2;
while(ss1[l]=='0')
{
ss1.erase(l--,1);
}
ss+=ss1;
cout<<ss;
}
else if(type==3)
{
s1=s.substr(0,z);
s2=s.substr(z+1,n-1-z);
for(int i=0;i<z;i++)
{
ss[z-i-1]=s1[i];
}
while(ss[0]=='0')
{
ss.erase(0,1);
}if(s1=="0")
ss="0";
ss+='/';
for(int i=0;i<n-z-1;i++)
{
ss1[n-z-i-2]=s2[i];
}
while(ss1[0]=='0')
{
ss1.erase(0,1);
}
ss+=ss1;
cout<<ss;
}
else if(type==4) {
if(s[0]=='0')
{
cout<<"0%";
return 0;
}
s.erase(n - 1, 1);
for(int i=0;i<n-1;i++)
{
s1[i]=s[n-i-2];
}
while(s1[0]=='0')
{
s1.erase(0,1);
}
s1+='%';
cout<<s1;
}
return 0;
}
求求大佬们了,娃忙活了三小时了没解决掉orz。