讨论区看遍了还是没解决,来个大佬康康我
查看原帖
讨论区看遍了还是没解决,来个大佬康康我
493163
希赟xiyun楼主2023/1/20 12:26

#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;
}

不管能否解决,很感谢您能看完我的代码

2023/1/20 12:26
加载中...