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)

非常快!⚡


七、🏆 本题考点:

✅ 输入多个数据

✅ 字符串读取

✅ 自定义函数

✅ 单位换算

✅ 数学计算


八、🌟 记忆口诀

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

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


相关推荐
水云桐程序员2 小时前
C++可以写手机应用吗
开发语言·c++·智能手机
小黄人软件7 小时前
C++读写编辑CSV文件示例源码 用于数据导入导出,比Excel好使
开发语言·c++·excel
郭涤生7 小时前
C++各个版本的性能和安全性总结
开发语言·c++
wljy18 小时前
二、静态库的制作和使用
linux·c语言·开发语言·c++
道剑剑非道8 小时前
FFmpeg 6.0 实战:用 C++ 封装摄像头采集与 RTSP 推流
开发语言·c++·ffmpeg
光电笑映8 小时前
从环境变量到进程虚拟地址空间——Linux 内存管理的底层脉络
linux·服务器·c++·c
sparEE9 小时前
c++字符串和自定义字面量
开发语言·c++
蜡笔小马10 小时前
03.C++设计模式-原型模式
c++·设计模式·原型模式
神仙别闹10 小时前
基于QT(C++)实现线性表的建立、插入、删除、查找等基本操作
java·c++·qt
salipopl11 小时前
C/C++ 中 volatile 关键字详解:原理、作用与实际应用
开发语言·c++