7-23 币值转换(20 分)

输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。

输入格式:

输入在一行中给出一个不超过9位的非负整数。

输出格式:

在一行中输出转换后的结果。注意“零”的用法必须符合中文习惯。

输入样例1:

813227345

输出样例1:

iYbQdBcScWhQdBeSf

输入样例2:

6900

输出样例2:

gQjB

这次是发现我用例全过,但是程序还是有bug,具体看44行

#include<stdio.h>
#include<stdbool.h>void toNUM(int n);
void toUNIT(int n);int main()
{bool BeginC = false;bool Czero = false;int a[9] = {0};int n, i, j, tmp;scanf("%d", &n);for(i=100000000, j=0; i>0; i/=10){a[j] = n/i;n %= i;j++;}for(i=0; i<j; i++){//printf("a[%d]:%d", i, a[i]);if(a[i]>0){BeginC = true;}if(BeginC){if(a[i] != 0){if(Czero) /**< 用来标记读xx万零xx的数 */{if(i!=5) /**<如果遇到连续0,直到千位,前面可以不读0  */{printf("a");}Czero = false;}toNUM(a[i]);toUNIT(i);}if(a[i] == 0){/**< if(i == 4)   本来if语句我是写成这样的,用例全过,但是对于100000001这个数,输出是错的,因为输多了一个W,所以改成加上对万位的判断*/                if(i == 4 && ((a[1]!=0) || (a[2]!=0) || (a[3]!=0)|| (a[4]!=0))) /**< 考虑到1001001应该读作1千万1千零1,即使万位遇0还是要读出 */toUNIT(i);Czero = true;}}}if(!BeginC){printf("a"); /**< 如果数组一直为0,输出0 */}system("pause") ;
}void toNUM(int n)
{switch(n){case 0:printf("a");break;case 1:printf("b");break;case 2:printf("c");break;case 3:printf("d");break;case 4:printf("e");break;case 5:printf("f");break;case 6:printf("g");break;case 7:printf("h");break;case 8:printf("i");break;case 9:printf("j");break;default:printf("@ERROR@");break;}
}
void toUNIT(int n)
{switch(n){case 0:printf("Y");break;case 1:printf("Q");break;case 2:printf("B");break;case 3:printf("S");break;case 4:printf("W");break;case 5:printf("Q");break;case 6:printf("B");break;case 7:printf("S");break;default:printf("");break;}
}

7-23 币值转换(20 分)相关推荐

  1. 7-168 币值转换 (20 分)

    7-168 币值转换 (20 分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为 ...

  2. 7-83 币值转换 (20 分)

    7-83 币值转换 (20 分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了 ...

  3. 7-83 币值转换 (20分)

    整了3个小时终于做出来了(我是菜鸡,大佬们别喷),初始的时候解题方向整错了:我把单位和数字放在一起输出了,导致以我现在能力无法正确表达出汉字的习惯.意识到可能需要重写代码,就看了下网上的答案,大体思路 ...

  4. 7-23 币值转换 (20分)

    7-23 币值转换 (20分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简 ...

  5. 【Java】7-23 币值转换 (20 分)

    7-23 币值转换 (20 分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了 ...

  6. 7-43 币值转换 (20分)_「篮球看吧」40岁了!生涯25年!还狂砍33分+联赛得分王,这他么是人吗...

    35岁的詹姆斯仍处在巅峰,让无数人惊讶.40岁的时候詹皇会是什么样子?现在詹皇有了一个参照样本,那就是40岁的斯科拉.这位阿根廷球星在迈入四旬依然能称霸欧洲顶级联赛,目前在意大利甲级篮球联赛得分榜排名 ...

  7. java币值转换_-PAT-java-5-23 币值转换 (20分)

    输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简化输出,用小写英文字母a-j顺序 ...

  8. PTA 7-43 币值转换 (20 分)

    题目 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简化输出,用小写英文字母a- ...

  9. 7-4 币值转换 (20分)

    输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简化输出,用小写英文字母a-j顺序 ...

  10. 币值转换 (20分)

    输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简化输出,用小写英文字母a-j顺序 ...

最新文章

  1. 【机器视觉】 read_measure算子
  2. java构造函数_JAVA的构造函数是怎么写的。万分感谢。路过的请不要嘲笑%_%
  3. ZooKeeper学习第四期---构建ZooKeeper应用
  4. opencv之使用open3d可视化opencv加载的点云数据
  5. 如何使用ArcGIS Pro制作三维地图
  6. DHCP报文单播/广播分析
  7. HTML5全局属性汇总
  8. 最简单的 QQ分享、微信分享、一键加QQ群 引入
  9. IPS,LED,LCD,TFT简介
  10. Elasticsearch搜索引擎一些参数含义和用法
  11. 【渝粤教育】电大中专跨境电子商务理论与实务 (13)作业 题库
  12. ObjectC快速入门教程(1)--创建类
  13. 在 Win10 系统下安装 JDK 及配置环境变量的方法
  14. 波音 737 连续坠毁,AI 要背锅?
  15. Mingw + msys编译libmono.so
  16. E.03.22 Learning Apps Have Boomed in the Pandemic. Now Comes the Real Test.
  17. lego-loam学习笔记(一)
  18. WDZ-BYJ与普通BV电线的区别有哪些?
  19. 领域模型和活动图(汽车保险系统)
  20. .net 4.0怎么安装

热门文章

  1. 数据挖掘与数据分析的主要区别是什么?
  2. js中的隐式类型转换有哪些
  3. 17.Future 介绍与主要用法
  4. AspectJ介绍(一)
  5. 【Python界面设计】Tkinter的Listbox控件
  6. Java 程序员,真的不能去外包吗?
  7. Python 二分法求多项式单根
  8. electron 主进程与渲染进程通讯
  9. 后台管理UI的框架选择
  10. 浅谈栈(Stack)实现