实用指南:B3926 [GSEP202312] 三级单位换算题型详解
最编程
2024-07-27 07:40:31
...
原题传送门
思路分析
本题的难点主要在于如何读入一个等式。
例如:
1 km = ? mm
我们可以一步步读入:
-
用一个整型变量读入大单位对应的数 \(x\)。
-
因为
cin
不会读入空格,我们可以不去管空格,我们就只需要读入一个字符串,读入大单位。 -
题中等式的格式相同,
=
和?
始终位置不变,我们读入两个字符读入这两个多余的字符。 -
最后读入一个字符串表示小单位。
读入后,直接多分支进行输出单位之间的转换即可。
注意空格,不要忘记多组输入输出要换行。
代码:
/*Written by smx*/
#include<bits/stdc++.h>
using namespace std;
int main()
{
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
while(n--){
int x;
char t;
string dw1,dw2;
cin>>x>>dw1>>t>>t>>dw2;
if(dw1=="m"){
cout<<x<<" m = "<<x*1000<<" mm\n";
}else if(dw1=="km"){
if(dw2=="m"){
cout<<x<<" km = "<<x*1000<<" m\n";
}else{
cout<<x<<" km = "<<x*1000000<<" mm\n";
}
}else if(dw1=="g"){
cout<<x<<" g = "<<x*1000<<" mg\n";
}else if(dw1=="kg"){
if(dw2=="g"){
cout<<x<<" kg = "<<x*1000<<" g\n";
}else{
cout<<x<<" kg = "<<x*1000000<<" mg\n";
}
}
}
return 0;
}