坏了,这个输出跟中毒了似的,求调
查看原帖
坏了,这个输出跟中毒了似的,求调
1378709
Yue_Hao楼主2025/2/6 23:06

求调代码!

#include <bits/stdc++.h>
//#include <stdio.h>
using namespace std;
/*
inline int read(){
	int x = 0, f = 1;
	char ch = getchar();
	while(ch < '0' || ch > '9'){
		if(ch == '-') f = -1;
		ch = getchar();
	}
	while(ch >= '0' && ch <= '9'){
		x = x * 10 + ch - '0';
		ch = getchar();
	}
	return (x * f);
}*/
int number[6];
inline int valuenum(int len){
	int tmp = 0, ans = 0;
	for(int i = len; i >= 0; i--){
		ans += number[i] * pow(10, tmp);
		tmp++;
	}
	return ans;
}
inline void printinfo(string dw1, string dw2, int tmp){
	int anum = valuenum(tmp), ans;
	if(dw1 == "km" || dw1 == "m" || dw1 == "mm"){
		if(dw1 == "km"){
			if(dw2 == "m") ans = anum * 1000;
			else ans = anum * 1000000;
		}else if(dw1 == "m"){
			ans = anum * 1000;
		}
	}else{
		if(dw1 == "kg"){
			if(dw2 == "m") ans = anum * 1000;
			else ans = anum * 1000000;
		}else{
			ans = anum * 1000;
		}
	}
	cout << anum << ' ' << dw1 << " = " << ans << ' ' << dw2 << endl;
}
int main(){
	string s, dw1 = "", dw2 = "";
	int n, tmp = -1;
	cin >> n;
	while(n--){
		getline(cin, s);
		for(int i = 0; s[i] != '-'; i++){
			if(s[i] >= '0' && s[i] <= '9') number[++tmp] = s[i] - '0';
			if(s[i] >= 'a' && s[i] <= 'z') dw1 = dw1 + s[i];
		}
		for(int i = s.find('='); i < s.size(); i++) if(s[i] >= 'a' && s[i] <= 'z') dw2 = dw2 + s[i];
		printinfo(dw1, dw2, tmp);
		dw1 = "";
		dw2 = "";
		for(int i = 0; i < 6; i++) number[i] = 0;
	}
	return 0;
}

样例1的输出

/*
input:
2
1 km = ? mm
1 m = ? mm
-----------------
output:
-2147483648 pxxhhrppppppp = 0
1 km = ? mm
-2147483648 kmmmymmmymmmymmmymmyypxxhhrpppppppxxhhrppppppp = 0 mm
*/
2025/2/6 23:06
加载中...