华为机试HJ42 学英语

首先看一下题

描述

Jessi初学英语,为了快速读出一串数字,编写程序将数字转换成英文:

具体规则如下:
1.在英语读法中三位数字看成一整体,后面再加一个计数单位。从最右边往左数,三位一单位,例如12,345 等
2.每三位数后记得带上计数单位 分别是thousand, million, billion.
3.公式:百万以下千以上的数 X thousand X, 10亿以下百万以上的数:X million X thousand X, 10 亿以上的数:X billion X million X thousand X. 每个X分别代表三位数或两位数或一位数。
4.在英式英语中百位数和十位数之间要加and,美式英语中则会省略,我们这个题目采用加上and,百分位为零的话,这道题目我们省略and

下面再看几个数字例句:

22: twenty two

100:  one hundred

145:  one hundred and forty five
1,234:  one thousand two hundred and thirty four
8,088:  eight thousand (and) eighty eight (注:这个and可加可不加,这个题目我们选择不加)
486,669:  four hundred and eighty six thousand six hundred and sixty nine
1,652,510:  one million six hundred and fifty two thousand five hundred and ten

说明:
数字为正整数,不考虑小数,转化结果为英文小写;
保证输入的数据合法

关键字提示:and,billion,million,thousand,hundred。

数据范围: 1≤n≤2000000 

输入描述:

输入一个long型整数

输出描述:

输出相应的英文写法

示例1

输入:

22

复制输出:

twenty two

一、问题分析

首先读题,仔细看描述中的内容,发现需求是

1.Jessi初学英语,为了快速读出一串数字,编写程序将数字转换成英文:

2.具体规则如下:(1)在英语读法中三位数字看成一整体,后面再加一个计数单位。从最右边往左数,三位一单位,例如12,345等

(2)每三位数后记得带上计数单位分别是thousand,million,billion.

(3)公式:百万以下千以上的数X thousand X,10亿以下百万以上的数:X million X thousand X, 10亿以上的数:X billion X million X thousand X.  每个X分别代表三位数或两位数或一位数。

(4)在英式英语中百位数和十位数之间要加and,美式英语中则会省略,我们这个题目采用加上and,百分位为零的话,这道题目我们省略and

3.下面再看几个数字例句:

22: twenty two

100: one hundred

145: one hundred and forty five

1,234: one thousand two hundred and thrity four

8,088: eight thousand (and) eighty eight(注:这个and可加可不加,这个题目我们选择不加)

486,669: four hundred and eighty six thousand six hundred and sixty nine

1,652,510: one million six hundred and fifty two thousand five hundred and ten

4.说明:数字为正整数,不考虑小数,转化结果为英文小写;

5.保证输入的数据合法

6.关键字提示:and ,billion, million, thousand, hundred。

7.数据范围:n大于等于1小于等于两百万

8.输入描述:输入一个long型整数

9.输出描述:输出相应的英文写法

二、解题思路

1.首先我们接受数字n,

2.然后我们将数字分组,从后往前,每3个一组

3.分组之后我们对每组的三个数字进行处理

4.百万组后面加million,千组后面加thousand

三、具体步骤

使用的语言是C

#include <stdio.h>static char base[][10] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
static char baseTen[][8] = {"twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"};
static char unit[][10] = {"", " thousand", " million"};int main(int argc, char** argv) {int input, data[3];while(scanf("%d", &input) != EOF) {if(input == 0) {printf("%s", base[0]);continue;}unsigned char flag = 0;for (int i = 0; i < 3; i++) {// 通过对1000求余得到后三位数字// i=0储存个位数,i=1储存千,i=2储存百万data[i] = input % 1000;if(data[i]) {// flag 逻辑或运算便于之后判断是否需要加单位flag = flag | 0x1 << i;}input /= 1000;}for(int i = 2; i >= 0; i--) {if(data[i] / 100) {// 如果百位不是0printf("%s hundred", base[data[i] / 100]);data[i] %= 100;// 如果十位个位有数字if(data[i] % 100) {printf(" and ");}}if(data[i] >= 20) {printf("%s", baseTen[data[i]/10 - 2]);data[i] %= 10;// 如果个位还有数字,预留一个空格if(data[i]) {printf(" ");}}if(data[i]) {printf("%s", base[data[i]]);}//如果标记过if(flag & (0x1 << i)) {printf("%s", unit[i]);flag &= ~(0x1 << i);// 取消标记// 如果后面还有数字,预留出来空格if(flag) {printf(" ");}}}}return 0;
}

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

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

相关文章

鸿蒙实战:页面跳转

文章目录 1. 实战概述2. 实现步骤2.1 创建项目2.2 准备图片素材2.3 编写首页代码2.4 创建第二个页面 3. 测试效果4. 实战总结 1. 实战概述 实战概述&#xff1a;本实战通过ArkUI框架&#xff0c;在鸿蒙系统上开发了一个简单的两页面应用。首页显示问候语和“下一页”按钮&…

国产系统给在线的Word文件创建表格

在实际项目的开发中会遇到这样的需求&#xff1a;要求在生成word文件的时候&#xff0c;在文件的指定位置动态生成表格并填充。 public Table createTable(int numRows,int numColumns,WdAutoFitBehavior autoFitBehavior)throws java.lang.Exception参数&#xff1a; numRows…

[数组二分查找] 0744. 寻找比目标字母大的最小字母

文章目录 1. 题目链接2. 题目大意3. 示例4. 解题思路5. 参考代码 1. 题目链接 744. 寻找比目标字母大的最小字母 - 力扣&#xff08;LeetCode&#xff09; 2. 题目大意 描述&#xff1a;给你一个字符数组 letters&#xff0c;该数组按非递减顺序排序&#xff0c;以及一个字符…

计算机代码python代做matlab编程c语言编写接单matlabqt开发java

处理一个涉及MATLAB编程、Python代码、深度机器学习、图像信号处理算法以及通信仿真的综合性项目&#xff0c;需要分步骤地进行规划和实施。以下是一个详细的指南&#xff0c;旨在帮助你开始并推进这类复杂任务。 1. 项目规划与需求分析 明确目标&#xff1a;确定项目的具体目…

「Mac玩转仓颉内测版12」PTA刷题篇3 - L1-003 个位数统计

本篇将继续讲解PTA平台上的题目 L1-003 个位数统计&#xff0c;通过对数字的处理与统计&#xff0c;掌握基础的字符串操作与数组计数功能&#xff0c;进一步提升Cangjie编程语言的实际应用能力。 关键词 PTA刷题数字统计数组操作字符串处理编程技巧 一、L1-003 个位数统计 题…

2023_Spark_实验十五:SparkSQL进阶操作

实验目标 通过实践掌握Spark SQL中复杂查询&#xff08;包括子查询、窗口函数、联接等&#xff09;的实现方式。了解如何通过合理的数据分区和缓存策略进行性能优化。实现一个基于Spark SQL的ETL数据处理流程&#xff0c;应用相关优化技巧。 实验背景 在本实验中&#xff0c…

flutter下拉刷新上拉加载的简单实现方式三

使用 CustomScrollView 结合 SliverList 实现了一个支持下拉刷新和上拉加载更多功能的滚动列表&#xff0c;对下面代码进行解析学习。 import dart:math;import package:flutter/material.dart;import custom_pull/gsy_refresh_sliver.dart; import package:flutter/cupertino…

大模型研究报告 | 2024年中国金融大模型产业发展洞察报告|附34页PDF文件下载

随着生成算法、预训练模型、多模态数据分析等AI技术的聚集融合&#xff0c;AIGC技术的实践效用迎来了行业级大爆发。通用大模型技术的成熟推动了新一轮行业生产力变革&#xff0c;在投入提升与政策扶植的双重作用下&#xff0c;以大模型技术为底座、结合专业化金融能力的金融大…

MySQL联合索引(abc)命中测试

1.建表 mysql创建一张表&#xff0c;表名&#xff1a;‘test_models’ id列为 主键&#xff0c;int类型 &#xff0c;自增a,b,c,d,e 全部是int&#xff08;11&#xff09;为&#xff08;a,b,c&#xff09;添加一个联合索引 index_abc 执行语句&#xff1a;创建表 CREATE TA…

Gin 框架入门(GO)-1

1 介绍 Gin 是一个 Go (Golang) 编写的轻量级 http web 框架&#xff0c;运行速度非常快&#xff0c;Gin 最擅长的就是 Api 接口的高并发。 2 Gin 环境搭建 1.下载并安装 gin go get -u github.com/gin-gonic/gin 2.将 gin 引入到代码中&#xff1a; import "github.co…

VUE3+Three.js搭建教程

一、创建VUE项目工程 1、方法一 使用下面命令行快速创建vue项目&#xff0c;Please pick a preset这里我们选择使用VUE3 vue create projectName 创建时可能会遇到的报错 错误原因&#xff1a;当前使用的node版本未全局安装vue-cli脚手架&#xff0c;使用下面命令安装后再使…

【React】状态管理之Redux

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 状态管理之Redux引言1. Redux 的核心概念1.1 单一数据源&#xff08;Single Sou…

windows C#-查询表达式基础(二)

查询变量 在 LINQ 中&#xff0c;查询变量是存储查询而不是查询结果的任何变量。 更具体地说&#xff0c;查询变量始终是可枚举类型&#xff0c;在 foreach 语句或对其 IEnumerator.MoveNext() 方法的直接调用中循环访问时会生成元素序列。 本文中的示例使用以下数据源和示例…

day08|计算机网络重难点之 DNS查询过程、CDN是什么,有什么作用?、Cookie和Session是什么?有什么区别?

day08|计算机网络重难点之 DNS查询过程、CDN是什么&#xff0c;有什么作用&#xff1f;、Cookie和Session是什么&#xff1f;有什么区别&#xff1f; 21.DNS查询过程22.CDN是什么&#xff0c;有什么作用&#xff1f;23.Cookie和Session是什么&#xff1f;有什么区别&#xff1f…

自己动手写Qt Creator插件

文章目录 前言一、环境准备1.先看自己的Qt Creator IDE的版本2.下载源码 二、使用步骤1.参考原本的插件2.编写自定义插件1.cmakelist增加一个模块2.同理&#xff0c;qbs文件也增加一个3.插件源码 三、效果总结 前言 就目前而言&#xff0c;Qt Creator这个IDE&#xff0c;插件比…

C++中的动态断言和静态断言

C中包含动态断言&#xff08;assert&#xff09;和静态断言&#xff08;static_assert&#xff09;&#xff0c;下面分别分析各自的用法。 1.动态断言&#xff08;assert&#xff09; assert 是一个宏&#xff0c;在预处理阶段不生效&#xff0c;在运行阶段才起作用&#xff0…

【JAVA】Java基础—面向对象编程:继承—方法重写

一、背景介绍 在Java编程中&#xff0c;方法重写是面向对象编程&#xff08;OOP&#xff09;的一项重要特性。它允许子类提供对父类方法的具体实现&#xff0c;以便实现多态性。方法重写的主要用途包括&#xff1a; 实现多态性&#xff1a;允许在运行时根据对象的实际类型调用…

ORA-00257: archiver error

ORA-00257: archiver error 归档满问题&#xff1a; 报错&#xff1a; SQL> conn admin/admin ERROR: ORA-00257: archiver error. Connect internal only, until freed. Warning: You are no longer connected to ORACLE. 检查空间&#xff1a; SQL> select name, tot…

React Native 全栈开发实战班 -React Native 基础

本课程旨在帮助学员系统掌握 React Native 全栈开发技能&#xff0c;从基础入门到实战项目开发。课程将分为多个模块&#xff0c;第一部分将聚焦于 React Native 的基础知识&#xff0c;包括开发环境搭建、React Native 简介与特点&#xff0c;以及项目结构解析。 第一部分&am…

云服务器安装mysql8.0(阿里云或者腾讯云都可以)

先说明一下&#xff0c;我使用的是腾讯云&#xff0c;之前用阿里云&#xff0c;然后试用期到期了&#xff0c;所以这次换腾讯云使用&#xff0c;没想到&#xff0c;我在腾讯云里面需要按照阿里云的教程做&#xff0c;还成功了。 这里是阿里云的教程&#xff0c;真的很详细&…