求助:#3 RE,小数在小数点后输出多余空格
查看原帖
求助:#3 RE,小数在小数点后输出多余空格
526826
extreme_point楼主2021/8/1 12:08

//代码编写的很乱,暂时也改不出来 注释有说明


#include<iostream>
#include<string>
using namespace std;
int main(){
	string s,s2="",s3="";
	cin>>s;
	int len=s.size(),i,j;
	bool flag=0;
	char ch;
	for(i=0;i<len;i++){
		if(!(s[i]>='0'&&s[i]<='9')){
			ch=s[i];
			if(ch=='.'||ch=='/'){
				flag=1;	
			}
			break;
		}
		else{
			s2[len-i-1]=s[i];//因为i从0开始,还要-1;这里是对小数做的特殊处理,因为整数部分实际上靠前 
		}
	}
	j=0;
	while((s2[j]=='0'||!s2[j])&&j<len){
		j++;//去前导0,找开始输出的位置 
	}
	for(int k=j;k<len;k++){
		cout<<s2[k];
	}
	cout<<ch;
	if(flag==1){
		for(int n=i+1;n<len;n++){
			s3[n]=s[(len-n)+i];//第二段,起始下标为i 
		}
		j=0;
		int t=len-1;
		if(ch=='.'){
			while(s3[t]=='0'){//小数部分末尾不能有0 
				t--;
			}
		}
		else{
			while((s2[j]=='0'||!s2[j])&&j<len){
				j++;
			}
		}	
		for(int k=j;k<=t;k++){
			cout<<s3[k];
		}
	}
  return 0;
}
2021/8/1 12:08
加载中...