为啥我这样过不了啊
查看原帖
为啥我这样过不了啊
276303
初十三楼主2020/7/31 14:40

我用了超级土的办法,大佬们可以帮我看看吗,到底是啥出现了问题 我是先判断符号,再用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;
}

帮忙看看吧,救救孩子。

2020/7/31 14:40
加载中...