字符串输入
2026-07-27 12:00:04
发布于:湖北
7阅读
0回复
0点赞
题目分析
这是一个单位转换问题,涉及:
- 长度单位:km(千米)、m(米)、mm(毫米)
- 重量单位:kg(千克)、g(克)、mg(毫克)
转换关系
| 转换 | 倍数 |
|---|---|
| km → m | × 1000 |
| km → mm | × 1000000 |
| m → mm | × 1000 |
| kg → g | × 1000 |
| kg → mg | × 1000000 |
| g → mg | × 1000 |
解题思路
- 读取输入:解析每行的数值和单位
- 单位转换:根据单位组合确定转换倍数
- 输出结果:按照格式要求输出
C++ 代码实现
#include <iostream>
using namespace std;
int main() {
int N;
cin >> N;
for (int i = 0; i < N; i++) {
long long x;
string unit1, eq, qmark, unit2;
// 读取格式:x 单位1 = ? 单位2
cin >> x >> unit1 >> eq >> qmark >> unit2;
long long result;
// 判断转换类型并计算
if (unit1 == "km" && unit2 == "m") {
result = x * 1000;
} else if (unit1 == "km" && unit2 == "mm") {
result = x * 1000000;
} else if (unit1 == "m" && unit2 == "mm") {
result = x * 1000;
} else if (unit1 == "kg" && unit2 == "g") {
result = x * 1000;
} else if (unit1 == "kg" && unit2 == "mg") {
result = x * 1000000;
} else if (unit1 == "g" && unit2 == "mg") {
result = x * 1000;
}
// 输出结果
cout << x << " " << unit1 << " = " << result << " " << unit2 << endl;
}
return 0;
}
代码详解
1. 输入解析
cin >> x >> unit1 >> eq >> qmark >> unit2;
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
输入:
2
1 km = ? mm
1 m = ? mm
执行:
1 km → mm:1 × 1000000 = 10000001 m → mm:1 × 1000 = 1000
输出:
1 km = 1000000 mm
1 m = 1000 mm
✓ 正确
样例 2
输入:
5
100 m = ? mm
1000 km = ? m
20 kg = ? g
200 g = ? mg
0 kg = ? mg
执行:
100 m → mm:100 × 1000 = 1000001000 km → m:1000 × 1000 = 100000020 kg → g:20 × 1000 = 20000200 g → mg:200 × 1000 = 2000000 kg → mg:0 × 1000000 = 0
输出:
100 m = 100000 mm
1000 km = 1000000 m
20 kg = 20000 g
200 g = 200000 mg
0 kg = 0 mg
✓ 正确
这里空空如也



有帮助,赞一个