华为OD机试真题 JavaScript 实现【人民币转换】【牛客练习题】

news2024/7/4 22:35:45

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
    • 五、JavaScript算法源码

专栏导读

本专栏收录于《华为OD机试(JavaScript)真题(A卷+B卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

  • 专栏福利:限时订阅49.9,订阅后可加入华为OD刷题群,获得哪吒优先答疑机会(华为OD刷题指导,远程代码调试),群里大佬众多可以抱团取暖,群友刷题经验分享,考试经验分享。

在这里插入图片描述

一、题目描述

考试题目和要点:

  1. 中文大写金额数字前应标明“人民币”字样。中文大写金额数字应用壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整等字样填写。
  2. 中文大写金额数字到“元”为止的,在“元”之后,应写“整字,如532.00应写成“人民币伍佰叁拾贰元整”。在”角“和”分“后面不写”整字。
  3. 阿拉伯数字中间有“0”时,中文大写要写“零”字,阿拉伯数字中间连续有几个“0”时,中文大写金额中间只写一个“零”字,如6007.14,应写成“人民币陆仟零柒元壹角肆分“。
  4. 10应写作“拾”,100应写作“壹佰”。例如,1010.00应写作“人民币壹仟零拾元整”,110.00应写作“人民币壹佰拾元整”
  5. 十万以上的数字接千不用加“零”,例如,30105000.00应写作“人民币叁仟零拾万伍仟元整”

二、输入描述

输入一个double数。

三、输出描述

输出人民币格式。

四、解题思路

  1. 输入一个double数;
  2. 使用split(“\.”)将输入的数分割为整数部分和小数部分,并存储在字符串数组s中;
  3. 判断小数部分是否为"00",如果是,则输出整数部分的中文大写金额数字后跟"元整";
  4. 判断整数部分是否为"0",如果是,则输出小数部分的中文大写金额数字;
  5. 如果不满足以上两种情况,输出整数部分的中文大写金额数字后跟"元",再输出小数部分的中文大写金额数字;
  6. 实现solveXiao函数,接收小数部分的字符串作为参数,返回小数部分的中文大写金额数字;
    • 将小数部分的第一个字符转换为整数,表示角;
    • 将小数部分的第二个字符转换为整数,表示分;
    • 如果角不为0,则添加角的中文大写金额数字和"角";
    • 如果分不为0,则添加分的中文大写金额数字和"分";
    • 返回拼接后的字符串;
  7. 实现solveZheng函数,接收整数部分的double数作为参数,返回整数部分的中文大写金额数字;
    • 使用StringBuilder来拼接中文大写金额数字;
    • 使用pow变量来表示权值的索引,初始值为0;
    • 使用循环,当整数部分不为0时进行迭代;
    • 在每次迭代中,根据权值索引添加"万"或"亿"到拼接的字符串中;
    • 将整数部分模10000得到四位数的临时值temp;
    • 提取临时值的个位、十位、百位和千位的数字;
    • 判断个位是否为0,如果不为0,则添加个位的中文大写金额数字;
    • 判断十位是否为0,如果不为0,则添加"拾"和十位的中文大写金额数字(如果十位为1,则不添加十位的中文大写金额数字);
    • 判断百位是否为0,如果不为0,则添加"佰"和百位的中文大写金额数字;
    • 判断千位是否为0,如果不为0,则添加"仟"和千位的中文大写金额数字;
    • 更新整数部分为整数部分除以10000的结果,用于下一次迭代;
    • 更新权值索引,当索引超过2时,重置为1;
    • 循环结束后,将拼接的字符串反转,并返回作为结果;
  8. 在主函数中,使用while循环读取输入的每个测试用例;
  9. 根据题目要求,输出人民币格式的中文大写金额数字

五、JavaScript算法源码

const ten = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"];
const power = ["万", "亿"];
const daiwei = ["元", "角", "分", "整"];

function solveXiao(s2) {
  let sb = "";
  const jiao = parseInt(s2[0]);
  const fen = parseInt(s2[1]);
  if (jiao !== 0) {
    sb += ten[jiao] + "角";
  }
  if (fen !== 0) {
    sb += ten[fen] + "分";
  }
  return sb;
}

function solveZheng(zheng) {
  let sb = "";
  let pow = 0;
  while (parseInt(zheng) !== 0) {
    if (pow !== 0) {
      sb += power[pow - 1];
    }
    const temp = parseInt(zheng % 10000);
    const gewei = temp % 10;
    const shiwei = Math.floor((temp / 10) % 10);
    const baiwei = Math.floor((temp / 100) % 10);
    const qianwei = Math.floor((temp / 1000) % 10);
    if (gewei !== 0) {
      sb += ten[gewei];
    }
    if (shiwei !== 0) {
      sb += "拾";
      if (shiwei !== 1) {
        sb += ten[shiwei];
      }
    } else {
      if (gewei !== 0 && (temp > 99 || parseInt(zheng) > 10000)) {
        sb += ten[0];
      }
    }
    if (baiwei !== 0) {
      sb += "佰";
      sb += ten[baiwei];
    } else {
      if (shiwei !== 0 && (temp > 999 || parseInt(zheng) > 10000)) {
        sb += ten[0];
      }
    }
    if (qianwei !== 0) {
      sb += "仟";
      sb += ten[qianwei];
    } else {
      if (baiwei !== 0 && parseInt(zheng) > 10000) {
        sb += ten[0];
      }
    }
    zheng /= 10000;
    pow++;
    if (pow > 2) {
      pow = 1;
    }
  }
  return sb.split('').reverse().join('');
}

function formatRMB(num) {
  const s = num.toString().split(".");
  if (s[1] === "00") {
    return "人民币" + solveZheng(parseInt(s[0])) + "元整";
  } else if (s[0] === "0") {
    return "人民币" + solveXiao(s[1]);
  } else {
    return "人民币" + solveZheng(parseInt(s[0])) + "元" + solveXiao(s[1]);
  }
}

🏆下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/751532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法基础】进制转换

一、X进制转十进制 (一)Question 1. 问题描述 2. Input 第一行一个整数 x; 第二行一个字符串 S。 3. Output 输出仅包含一个整数,表示答案。 4. Sample Input 16 7B5. Sample Output 123(二)题解 #include <bits/stdc++.h> using

ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升

专题一 空间数据获取与制图 1.1 软件安装与应用讲解 1.2 空间数据介绍 1.3海量空间数据下载 1.4 ArcGIS软件快速入门 1.5 Geodatabase地理数据库 专题二 ArcGIS专题地图制作 2.1专题地图制作规范 2.2 空间数据的准备与处理 2.3 空间数据可视化&#xff1a;地图符号与注…

宝塔Linux面板安装Composer依赖管理工具与PHP依赖包的方法

最近看见腾讯云有一个AI绘画还挺有意思&#xff0c;想搞来写个接口玩 但是Composer一直运行不成功 提示xdebug什么的 最后经过搜索 发现 需要删除你宝塔里所有php中禁用的putenv函数 然后重启php就可以了&#xff01; 然后就可以运行这个命令了 出现这种情况 还需要删除所有…

MySQL创建索引的方式详解、索引的删除、MySQL8.0降序索引

1、索引创建的方式 方式1&#xff1a;创建表时指定索引列方式2&#xff1a;使用ALTER TABLE创建索引方式3&#xff1a;使用CREATE TABLE创建索引 2、表中索引查看的方式 方式1&#xff1a;使用语句 SHOW INDEX FROM 表名; 语句查看表中的索引 如&#xff1a; 方式2&#x…

UG\NX二次开发 获取对象的边界包容盒 UF_MODL_ask_bounding_box

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: 获取对象的边界包容盒 UF_MODL_ask_bounding_box,只能得到绝对坐标系下的边界包容盒,速度快,结果不精确。 效果: 代码: //UF_MODL_ask_bounding_box #include "me.hpp" #include &…

发布项目管理生产的时候出现界面滚动不了

新的项目管理发布后出现页面鼠标上下滚动不了的问题&#xff0c;比较奇怪的是&#xff0c;本地开发没有问题&#xff0c;但发布生产后就出现问题了。 因为这次增加的组件比较多&#xff0c;相应的样式也比较多&#xff0c;所以那先分几个部分处理 1、先新加的几个组件是否有冲…

浅谈物联网在电力行业的应用

摘要&#xff1a;随着社会经济的快速发展&#xff0c;物联网技术也在各个行业中得到了广泛的应用&#xff0c;特别是在电力行业中应用物联网技术&#xff0c;也有效的促进了电力行业的现代化发展。而物联网与智能电网同样都是当代重要的高新技术以及新兴产业。所以通过对于物联…

3Ds max入门教程:逼真的细菌

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 最终图像 在本教程中&#xff0c;您将学习如何创建一个异国情调的细菌世界。主要重点将是制造使一切变得不同的材料。 步骤-1 遵循红色、绿色和橙色框参数。 步骤-2 在“渲染场景”&#xff08;F10&…

Web训练项目相关

一、简述 一直没有机会整理前面做过的内容&#xff0c;特此文章整理所学过的web相关训练内容,方便查阅&#xff0c;并在其中参杂对代码理解。 二、相关项目 1.getparameter的url传值 index.jsp <% page language"java" contentType"text/html; charsetu…

概率论的学习和整理16: 泊松分布(未完成)

目录 简单的扩展到泊松分布 比较整体的动态过程&#xff0c;增加实验次数时 当二项分布&#xff0c;n很大&#xff0c;p很小的时候&#xff0c;会趋向泊松分布 当n足够大时&#xff0c;二项分布趋向于正态分布。这个结论在概率论中被称为中心极限定理&#xff0c;它是概率论中一…

【剑指offer】14. 数值的整数次方(java)

文章目录 数值的整数次方描述示例1示例2示例3思路完整代码 数值的整数次方 描述 实现函数 double Power(double base, int exponent)&#xff0c;求base的exponent次方。 注意&#xff1a; 1.保证base和exponent不同时为0。 2.不得使用库函数&#xff0c;同时不需要考虑大…

家政小程序开发-H5+小程序

移动互联网的发展&#xff0c;微信小程序逐渐成为商家拓展线上业务的重要手段。家政服务作为日常生活中不可或缺的一部分&#xff0c;也开始尝试通过小程序来提高服务质量和效率。 下面是一篇关于家政小程序开发的H5小程序的文章&#xff0c;希望对您有所帮助。 家政服…

【大虾送书第二期】《Python机器学习:基于PyTorch和Scikit-Learn 》

目录 ✨写在前面 ✨亲笔作序推荐 ✨内容简介 ✨学完本书&#xff0c;你将能够 ✨作者简介 ✨PyTorch核心维护者亲笔推荐 ✨抢先购买 &#x1f990;博客主页&#xff1a;大虾好吃吗的博客 &#x1f990;专栏地址&#xff1a;免费送书活动专栏地址 写在前面 近年来&#xff0c;…

nginx日志分析,实时可视化工具goaccess

一款可以实时分析NGINX访问日志&#xff0c;并且支持可视化的软件 GoAccess - Visual Web Log Analyzer github如下&#xff1a;GitHub - allinurl/goaccess: GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or th…

精通从入门到工程应用 PLC:

PLC&#xff08;可编程逻辑控制器&#xff09;的学习和入门相对容易&#xff0c;但其难点在于实际的工程应用。学习PLC并熟悉其基本操作并不复杂&#xff0c;但真正掌握其在实际工程中的应用需要更多的经验和实践。 PLC的实际工程应用与具体项目紧密相关&#xff0c;需要了解信…

一套完全开源,支持多租户,界面配置单点的后端框架JVS

JVS的多租户体系统 在IT系统中&#xff0c;“租户”&#xff08;tenant&#xff09;通常用于指代一种多租户架构&#xff08;multi-tenancy&#xff09;&#xff0c;它是一种软件架构模式&#xff0c;允许多个用户或组织共享相同的应用程序或系统实例&#xff0c;但彼此之间的…

【Docker安装部署Hippo4j教程】

&#x1f680; 线程池管理工具-Hippo4j &#x1f680; &#x1f332; AI工具、AI绘图、AI专栏 &#x1f340; &#x1f332; 如果你想学到最前沿、最火爆的技术&#xff0c;赶快加入吧✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;CSDN-Java领域优质创作者&#…

ElasticSearch文档(document)在index上的增删改查

文章目录 一、document定义&#xff1a;二、单条增删改查1、创建索引&#xff1a;2、添加文档&#xff1a;3、获取文档&#xff1a;4、更新文档&#xff1a;5、删除文档&#xff1a; 三、批量增删改查&#xff1a;1、批量添加文档&#xff1a;2、批量更新文档&#xff1a;3、批…

OpenCV中的RGB与YUV转换

1 基本概念 YUV 颜色空间从模拟电视时代开始就被广泛应用于彩色图像的转换与处理。其基于一个 3x3 的矩阵&#xff0c;通过线性变换将 RGB 像素转换为一个亮度&#xff08;Luma&#xff09;分量 Y 以及两个色度&#xff08;Chroma&#xff09;分量 U 和 V。由于模拟电视存在着多…

【图像分割和识别】活动形状模型 (ASM) 和活动外观模型 (AAM)(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…