欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

实用指南: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;
}