当前位置: 首页 > ops >正文

华为OD机试真题—— 货币单位换算(2025B卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

在这里插入图片描述

2025 B卷 100分 题型

本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式;
并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析;
本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分享》

华为OD机试真题《货币单位换算》:


文章快捷目录

题目描述及说明

Java

python

JavaScript

C++

C

GO


题目名称:货币单位换算


  1. 知识点:字符串解析、逻辑处理
  2. 时间限制:1秒
  3. 空间限制:256MB
  4. 限定语言:不限

题目描述

记账本上记录了若干条多国货币金额,需要转换成人民币分(fen),汇总后输出。

  • 输入格式
    • 第一行输入整数N(0 < N < 100),表示记录数。
    • 接下来N行,每行一条货币记录,格式为“数字+货币单位”(如100CNY53HKD87cents)。货币单位可能是单独元(如CNY)、单独分(如fen),或元与分的组合(如20CNY53fen)。
  • 汇率规则
    • 1CNY = 100fen(人民币)
    • 1HKD = 100cents(港元)
    • 1JPY = 100sen(日元)
    • 1EUR = 100eurocents(欧元)
    • 1GBP = 100pence(英镑)
    • 汇率表:100CNY = 1825JPY = 123HKD = 14EUR = 12GBP
  • 输出要求
    • 将所有货币换算为人民币分后汇总,仅保留整数部分(舍弃小数),输出不带单位。
示例

输入1

1  
100CNY  

输出1

10000  

输入2

2  
20CNY53fen  
53HKD87cents  

输出2

6432  

Java

问题分析

我们需要将不同国家的货币金额转换为人民币分(fen),并汇总所有金额的整数值。输入包含若干货币记录,每个记录可能包含元和分的组合,需要根据汇率表统一转换为人民币分后求和。


解题思路

  1. 汇率映射:根据题目提供的汇率表,建立元和分单位的转换率映射表。
  2. 字符串解析:使用正则表达式提取金额记录中的数值和单位。
  3. 金额转换:根据单位匹配对应的转换率,将金额转换为人民币分。
  4. 汇总输出:累加所有转换后的金额,取整数部分输出。

代码实现

import java.util.*;
import java.util.regex.*;public class Main {// 元单位到人民币分的转换率private static Map<String, Double> yuanRates = new HashMap<>();// 分单位到人民币分的转换率private static Map<String, Double> fenRates = new HashMap<>();static {// 初始化元单位汇率yuanRates.put("CNY", 100.0);yuanRates.put("HKD", 10000.0 / 123);yuanRates.put("JPY", 10000.0 / 1825);yuanRates.put("EUR", 10000.0 / 14);yuanRates.put("GBP", 10000.0 / 12);// 初始化分单位汇率fenRates.put("fen", 1.0);fenRates.put("cents", 100.0 / 123);fenRates.put("sen", 100.0 / 1825);fenRates.put("eurocents", 100.0 / 14);fenRates.put("pence", 100.0 / 12);}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int N = scanner.nextInt();scanner.nextLine(); // 跳过读取剩余行double totalFen = 0.0;Pattern pattern = Pattern.compile("(\\d+)([A-Za-z]+)"); // 正则匹配数字+单位for (int i = 0; i < N; i++) {String line = scanner.nextLine();Matcher matcher = pattern.matcher(line);double lineSum = 0.0;while (matcher.find()) {int amount = Integer.parseInt(matcher.group(1)); // 提取数值String unit = matcher.group(2);                  // 提取单位Double rate = yuanRates.get(unit); // 查找元单位汇率if (rate != null) {lineSum += amount * rate;} else {rate = fenRates.get(unit);    // 查找分单位汇率if (rate != null) {lineSum += amount * rate;}}}totalFen += lineSum; // 累加当前行总fen}System.out.println((long) totalFen); // 输出整数部分}
}

代码解析

  1. 汇率表初始化

    static {yuanRates.put("CNY", 100.0);// 其他元单位汇率...fenRates.put("fen", 1.0);// 其他分单位汇率...
    }
    
    • yuanRates存储元单位到人民币分的转换率,fenRates存储分单位的转换率。
  2. 输入处理

    Scanner scanner = new Scanner(System.in);
    int N = scanner.nextInt();
    scanner.nextLine(); // 跳过换行符
    
    • 读取记录数N,并处理换行符问题。
  3. 正则表达式匹配

    Pattern pattern = Pattern.compile("(\\d+)([A-Za-z]+)");
    Matcher matcher = pattern.matcher(line);
    
    • 使用正则表达式(\d+)([A-Za-z]+)匹配金额记录中的数值和单位。
  4. 金额转换逻辑

    while (matcher.find()) {int amount = Integer.parseInt(matcher.group(1));String unit = matcher.group(2);// 查找汇率并计算fen值...
    }
    
    • 提取每个部分的数值和单位,根据单位类型查找对应汇率并转换为人民币分。
  5. 累加与输出

    totalFen += lineSum;
    System.out.println
http://www.xdnf.cn/news/8756.html

相关文章:

  • 把本地项目上传github上
  • 前端绘图基础——SVG详解
  • SprigBoot整合rocketmq-v5-client-spring-boot
  • Kafka Broker 总体工作流程
  • c++总结-04-智能指针
  • 嵌入式学习笔记 - freeRTOS 列表,链表,节点跟任务之间关系
  • 深度图数据增强方案-随机增加ROI区域的深度
  • 制造业主要管理哪些主数据范围
  • 云迹机器人底盘调用
  • 从AD9361 到 ADSY1100 ,中间的迭代产品历史
  • 软考 系统架构设计师系列知识点之杂项集萃(73)
  • 【MPC控制 - 从ACC到自动驾驶】5. 融会贯通:MPC在ACC中的优势总结与知识体系构建
  • 云手机是什么?哪个云手机便宜好用,掌派云手机流畅不卡顿
  • 前端垫片chimp
  • 贪心算法应用:Ford-Fulkerson最大流问题详解
  • 【C语言干货】free细节
  • 弦序参量(SOP)
  • 【MySQL】第10节|MySQL全局优化与Mysql 8.0新增特性详解
  • 【图像大模型】ControlNet:深度条件控制的生成模型架构解析
  • 如何确定是不是一个bug?
  • 深入理解Istio:全面解析与实践指南
  • Java 学习笔记:注解、泛型与 IO 流
  • 线性代数之张量计算,支撑AI算法的数学原理
  • 神经正切核推导(2)
  • DeepSeek联网Google搜索引擎
  • Windows端的C函数setlocale、printf与wprintf打印中文字符谜局小解
  • 深入浅出IIC协议 - 从总线原理到FPGA实战开发 -- 第六篇:AXI4-Lite桥接设计
  • 金众诚业财一体化解决方案如何提升项目盈利能力?
  • 国际荐酒师(香港)协会亮相新西兰葡萄酒巡展深度参与赵凤仪大师班
  • 《数据结构》系列笔记|附扫描手写笔记 1.0开篇-数据结构在学什么?