我用了超级土的办法,大佬们可以帮我看看吗,到底是啥出现了问题 我是先判断符号,再用switch来针对不同类型的数的独自解法。
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin >> s;
int k=0,d,h;
h=s.length();
for(int i=0;i<s.length();i++)
{
if(s[i]=='%')
{
k=1;
d=i;
break;
}
if(s[i]=='.')
{
k=2;
d=i;
break;
}
if(s[i]=='/')
{
k=3;
d=i;
break;
}
}
switch(k)
{
case 0:{
while(1)
{
if(s[h-1]=='0')
h-=1;
else
break;
}
for(int i=h-1;i>=0;i--)
cout << s[i];
break;
}
case 1:{
int i=0;
while(1)
{
if(s[h-2-i]=='0')
i++;
else
break;
}
for(int j=h-2-i;j>=0;j--)
cout << s[j];
cout << s[h-1];
break;
}
case 2:{
int q=0,w=0;
while(1)
{
if(s[h-1]=='0')
h-=1;
else
break;
}
while(1)
{
if(s[d-1-q]=='0')
q++;
else
break;
}
while(1)
{
if(s[d+1+w]=='0')
w++;
else
break;
}
for(int i=d-q-1;i>=0;i--)
cout << s[i];
cout << s[d];
if(h-1-d>0)
for(int i=h-1;i>d+w;i--)
cout << s[i];
else
cout << "0";
break;
}
case 3:{
int q=0,w=0;
while(1)
{
if(s[h-1]=='0')
h-=1;
else
break;
}
while(1)
{
if(s[d-1-q]=='0')
q++;
else
break;
}
while(1)
{
if(s[d+1+w]=='0')
w++;
else
break;
}
for(int i=d-q-1;i>=0;i--)
cout << s[i];
cout << s[d];
if(h-1-d>0)
for(int i=h-1;i>d+w;i--)
cout << s[i];
else
cout << "0";
break;
}
default:break;
}
return 0;
}
帮忙看看吧,救救孩子。