GESP2023年12月认证C++三级( 第三部分编程题(2、单位转换))


📏《单位转换王国大冒险》


一、🏰 故事开始:数字王国的作业危机

在数学王国里,住着一个爱学习的小朋友 ------ 小杨。👦

这一天,老师布置了很多单位转换作业:

  • 1 km = ? mm

  • 20 kg = ? g

  • 100 m = ? mm

小杨一看,题目太多啦!😵

于是他说:

我要用 C++ 魔法来帮我做作业!✨

你的任务就是帮助小杨写程序!


二、🎯 题目要求

我们只做 大单位变小单位


1、📏 长度家族

它们的关系是:

复制代码
1 km = 1000 m
1 m = 1000 mm

所以:

复制代码
1 km = 1000000 mm

2、⚖️ 重量家族

它们的关系是:

复制代码
1 kg = 1000 g
1 g = 1000 mg

所以:

复制代码
1 kg = 1000000 mg

3、📘 输入例子

复制代码
2
1 km = ? mm
1 m = ? mm

4、📗 输出例子

复制代码
1 km = 1000000 mm
1 m = 1000 mm

三、🧠 解题思路


1、🌟 第一步:先读题目数量

复制代码
2

表示有两道题。


2、🌟 第二步:一题一题读

例如:

复制代码
1 km = ? mm

我们要取出:

  • 数字:1

  • 原单位:km

  • 目标单位:mm


3、🌟 第三步:查倍率表

我们给每个单位一个"价值":

单位
km 1000000
m 1000
mm 1
kg 1000000
g 1000
mg 1

4、🌟 第四步:计算答案

例如:

复制代码
1 km -> mm

计算:

复制代码
1 × 1000000 ÷ 1 = 1000000

例如:

复制代码
20 kg -> g

计算:

复制代码
20 × 1000000 ÷ 1000 = 20000

四、💻 参考程序

复制代码
#include <iostream>
#include <string>
using namespace std;

// 返回单位对应的倍率
long long getValue(string s)
{
    if(s == "km") return 1000000;
    if(s == "m")  return 1000;
    if(s == "mm") return 1;

    if(s == "kg") return 1000000;
    if(s == "g")  return 1000;
    if(s == "mg") return 1;

    return 1;
}

int main()
{
    int T;
    cin >> T;

    while(T--)
    {
        long long x;
        string a, b, equalSign, questionMark;

        cin >> x >> a >> equalSign >> questionMark >> b;

        long long ans = x * getValue(a) / getValue(b);

        cout << x << " " << a << " = " << ans << " " << b << endl;
    }

    return 0;
}

五、🪄 程序讲解


1、🎯 读取一整题

输入:

复制代码
1 km = ? mm

程序读成:

复制代码
x = 1
a = km
equalSign = =
questionMark = ?
b = mm

2🎯 计算答案

复制代码
ans = x * getValue(a) / getValue(b);

例子:

复制代码
1 km = ? mm

变成:

复制代码
1 × 1000000 ÷ 1
= 1000000

3、🎯 输出格式

复制代码
cout << x << " " << a << " = " << ans << " " << b;

输出:

复制代码
1 km = 1000000 mm

六、🌟 解题小窍门:

我们把所有单位都先变成最小单位:

  • 长度都变成 mm

  • 重量都变成 mg

这叫:

🪄 统一单位法


1、🎁 再来几个例子


📏 例1

复制代码
100 m = ? mm

计算:

复制代码
100 × 1000 = 100000

⚖️ 例2

复制代码
200 g = ? mg

计算:

复制代码
200 × 1000 = 200000

⚖️ 例3

复制代码
0 kg = ? mg

计算:

复制代码
0 × 1000000 = 0

2、⏱️ 时间复杂度

每题只做一次计算:

复制代码
O(1)

总共 T 题:

复制代码
O(T)

非常快!⚡


七、🏆 本题考点:

✅ 输入多个数据

✅ 字符串读取

✅ 自定义函数

✅ 单位换算

✅ 数学计算


八、🌟 记忆口诀

大单位变小单位,数字变大别怕累!

先变最小再转换,程序计算真方便!


相关推荐
拳里剑气9 小时前
C++算法:多源BFS
c++·算法·宽度优先·多源bfs
ysa05103010 小时前
【板子】短序列dp(换成维护更小常数维度的dp)
c++·笔记·算法·板子
aramae12 小时前
C++ IO流完全指南:从C标准库到C++流式编程
服务器·c语言·开发语言·c++·后端
_wyt00112 小时前
c++里的族谱:树
c++·
@三十一Y13 小时前
C++:AVL树实现
c++
haolin123.14 小时前
类和对象(上)
开发语言·c++
ShineWinsu14 小时前
对于Linux:传输层协议UDP原理的解析
linux·c++·面试·udp·协议·传输层·计算机系统
LingzhiPi14 小时前
零知派ESP32--AS5600磁吸旋钮音量控制器
c++·单片机·嵌入式硬件
小保CPP14 小时前
OpenCV C++车型识别1-图像预处理
c++·人工智能·opencv·计算机视觉
库克克14 小时前
【C++】C++11 包装器function 与 绑定器 bind
开发语言·c++