题目分析
这是一个单位转换问题,涉及:
* 长度单位:km(千米)、m(米)、mm(毫米)
* 重量单位:kg(千克)、g(克)、mg(毫克)
转换关系
转换 倍数 km → m × 1000 km → mm × 1000000 m → mm × 1000 kg → g × 1000 kg → mg × 1000000 g → mg × 1000
解题思路
1. 读取输入:解析每行的数值和单位
2. 单位转换:根据单位组合确定转换倍数
3. 输出结果:按照格式要求输出
C++ 代码实现
代码详解
1. 输入解析
* x:数值(如 1, 100, 1000)
* unit1:原单位(如 "km", "m", "kg")
* eq:等号 "="
* qmark:问号 "?"
* unit2:目标单位(如 "mm", "g", "mg")
2. 转换逻辑
使用 if-else 判断单位组合,乘以相应的倍数:
* 大单位→小单位:乘法
* 最大倍数是 1000000(km→mm 或 kg→mg)
3. 数据类型
使用 long long 防止溢出:
* 最大输入:1000
* 最大倍数:1000000
* 最大结果:1000 × 1000000 = 10^9(在 int 范围内,但用 long long 更安全)
样例验证
样例 1
输入:
执行:
1. 1 km → mm:1 × 1000000 = 1000000
2. 1 m → mm:1 × 1000 = 1000
输出:
✓ 正确
样例 2
输入:
执行:
1. 100 m → mm:100 × 1000 = 100000
2. 1000 km → m:1000 × 1000 = 1000000
3. 20 kg → g:20 × 1000 = 20000
4. 200 g → mg:200 × 1000 = 200000
5. 0 kg → mg:0 × 1000000 = 0
输出:
✓ 正确