为何65分?
查看原帖
为何65分?
1378709
Yue_Hao楼主2024/8/13 15:09

有哪些dalao们帮我看看这个代码为啥只有65分吗?谢谢


(错误点:9,10,11,13,14,17,19)


#include <bits/stdc++.h>
using namespace std;
string daoint(string s){
	string ans = "";
	if(s == "0"){
		ans = "0";
		return ans;
	}else{
		reverse(s.begin(), s.end());
		for(int i = 0; i < s.size(); i++){
			if(s[i] != '0') break;
			else s[i] = ' ';
		}
		while(s.find(' ') != string::npos) s.replace(s.find(' '), 1, "");
		return s;
	}
}
string daofen(string s){
	string ans;
	bool f = false;
	if( s[0] == 0 ) f = true;
	ans = ans + "/" + daoint(s.substr(s.find("/") + 1, s.size() - 1));
	if(ans[0] == '/') ans.insert(0, "0");
	return ans;
}
string redouble(string s){
	string ans = daoint(s.substr(0, s.find(".")));
	ans = ans + "." + daoint(s.substr(s.find(".") + 1, s.size() - 1));
	for(int i = ans.size() - 1; i >= 0; i--){
		if(ans[i] == '.') ans[i] = ' ';
		if(ans[i] != '0') break;
		else ans[i] = ' ';
	}
	if( ans[0] == '.' ) ans.insert(0, "0");
	if( ans[ans.size() - 1] == '.' ) ans[ans.size() - 1] = ' ';
	return ans;
}
string daobai(string s){
	string ans = daoint(s.substr(0, s.size() - 2));
	ans = ans + "%";
	if(ans[0] == '%') ans.insert(0, "0");
	return ans;
}
int main(){
	string s, ans;
	cin >> s;
	if( s.find("/") == string::npos && s.find(".") == string::npos && s.find("%") == string::npos ) ans = daoint(s);
	else if( s.find("/") != string::npos && s.find(".") == string::npos && s.find("%") == string::npos ) ans = daofen(s);
	else if( s.find("/") == string::npos && s.find(".") != string::npos && s.find("%") == string::npos ) ans = redouble(s);
	else if( s.find("/") == string::npos && s.find(".") == string::npos && s.find("%") != string::npos ) ans = daobai(s);
	cout << ans;
	return 0;
}
2024/8/13 15:09
加载中...