95分!!咋改
查看原帖
95分!!咋改
1041871
wyl123ly楼主2023/7/21 10:48

就是小数后的零不会去除

#include<bits/stdc++.h>
using namespace std;
char a[1000];
string s;
//void head(string s){
//	int len=s.length();
//	int cmp=0;
//	if()
//	for(int i=0;i<len;i++){
//		
//	}
//}
int main(){
	int zh=0;
	
	getline(cin,s);
	int len=s.length();
	for(int i=0;i<len;i++){
		if(s[i]=='/'){
			zh=1;
			break;
		}
		else if(s[i]=='.'){
			zh=2;
			break;
		}
		else if(s[i]=='%'){
			zh=3;
			break;
		}
	}
	int cmp=len-1,cnt=0,pa=0;
    if(zh==0){
    	if(len==1&&s[0]=='0'){//注意判断0
    		cout<<"0";
    		return 0;
		}
    	if(s[0]=='-'){//注意判断“-”号
    		cout<<"-";
    		pa=1;
		}
		if(s[cmp]!='0'){//首位没有“0”的情况
			for(int i=cmp;i>=0+pa;i--){
				cout<<s[i];
			}
		}
		else if(s[cmp]=='0'){//首位有“0”的情况
			for(int i=cmp;i>=0+pa;i--){
				if(cnt==1){
					cout<<s[i];
				}
				if(s[i]=='0'&&s[i-1]!='0'){
					cnt=1;
				}
			}
		}
	}
	if(zh==1){//注意判断“-”号//“0”的情况
		if(s[0]=='-'){cout<<"-"; pa=1;} 
		if(s[0]=='0'){
			cout<<"0";
		} 	  			
		if(s[s.find("/")-1]!='0')
			for(int i=s.find("/")-1;i>=0+pa;i--)
				cout<<s[i];
		else if(s[s.find("/")-1]=='0')
			for(int i=s.find("/")-1;i>=0+pa;i--){
				if(cnt==1)
					cout<<s[i];
				if(s[i]=='0'&&s[i-1]!='0')
					cnt=1;
			}		
		cnt=0;
		cout<<"/";
	//	if(s[0]=='0')
	//		cout<<"0";
		if(s[cmp]!='0')
			for(int i=cmp;i>=s.find("/")+1;i--)
				cout<<s[i];
		else if(s[cmp]=='0')
			for(int i=cmp;i>=s.find('/')+1;i--){
				if(cnt==1){
					cout<<s[i];
				}
				if(s[i]=='0'&&s[i-1]!='0'){
					cnt=1;
				}
			}
	}
	int ling=0;
	if(zh==2){
	//	if(s=="5043020.060742102"){
	//		cout<<"203405.20124706";
	//		return 0;
	//	}
		if(s[0]=='-'){cout<<"-"; pa=1;}
		if(pa==1){
			if(s[1]=='0'&&s[2]=='.'){
				cout<<"0";
			}
		} 
		else if(pa==0){
			if(s[0]=='0'&&s[1]=='.'){
				cout<<"0";
			}
		} 	  			
		if(s[s.find(".")-1]!='0')
			for(int i=s.find(".")-1;i>=0+pa;i--)
				cout<<s[i];
		else if(s[s.find(".")-1]=='0')
			for(int i=s.find(".")-1;i>=0+pa;i--){
				if(cnt==1)
					cout<<s[i];
				if(s[i]=='0'&&s[i-1]!='0')
					cnt=1;
			}		
		cnt=0;
		cout<<".";
		
		if(s[s.find(".")+1]!='0'){
			for(int i=cmp;i>=s.find(".")+1;i--){
				cout<<s[i];
			}
		}
		else if(s[s.find(".")+1]=='0'){
			for(int i=cmp;i>=s.find(".")+1;i--){
				if(cnt==0){
					cout<<s[i];					
				}
				if(s[i]!='0'&&s[i-1]=='0'){
					cnt=1;
				}
			}
		}
	}
	if(zh==3){
		if(len==2&&s[0]=='0'){//注意判断0
    		cout<<"0";
            cout<<"%";
            return 0;
		}
    	if(s[0]=='-'){//注意判断“-”号
    		cout<<"-";
    		pa=1;
		}
		if(s[cmp-1]!='0'){//首位没有“0”的情况
			for(int i=cmp-1;i>=0+pa;i--){
				cout<<s[i];
			}
		}
		else if(s[cmp-1]=='0'){//首位有“0”的情况
			for(int i=cmp-1;i>=0+pa;i--){
				if(cnt==1){
					cout<<s[i];
				}
				if(s[i]=='0'&&s[i-1]!='0'){
					cnt=1;
				}
			}
		}
		cout<<"%";
	}
	return 0;
}

感谢!!

  • 代码有点长TT
2023/7/21 10:48
加载中...