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)

非常快!⚡


七、🏆 本题考点:

✅ 输入多个数据

✅ 字符串读取

✅ 自定义函数

✅ 单位换算

✅ 数学计算


八、🌟 记忆口诀

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

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


相关推荐
2023自学中1 小时前
C++ 内存追踪器
linux·c++
DogDaoDao6 小时前
【GitHub】 LLVM Project 深度解析:现代编译器基础设施的基石
java·c++·python·程序员·github·编译器·llvm
KuaCpp6 小时前
C++进程(下)
c++
来一碗刘肉面7 小时前
C++中的引用语法
c++·算法
杜子不疼.7 小时前
【Qt初识】工程起步:项目创建、代码解读与对象树
数据库·c++·qt
知无不研8 小时前
算法:Fizz Buzz解题思路
c++·算法·leetcode
汉克老师8 小时前
GESP2026年6月认证C++八级( 第二部分判断题(1-10))精讲
c++·归并排序·dijkstra·二分·互斥·gesp8级·可重复组合
nianniannnn9 小时前
c++复习自存--流、异常处理、多线程与C++工程规范
开发语言·c++
诚信定制8399 小时前
C++23新特性实战与CLion深度支持
开发语言·c++·算法
知无不研10 小时前
缺省参数与缺省函数的区别
c++·语法