在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例常规C/C++编程 → 金额大小写转换(阿拉伯数字与汉字转换)

金额大小写转换(阿拉伯数字与汉字转换)

常规C/C++编程

下载此实例
  • 开发语言:C/C++
  • 实例大小:2.45KB
  • 下载次数:9
  • 浏览次数:1028
  • 发布时间:2018-07-06
  • 实例类别:常规C/C++编程
  • 发 布 人:走向黎明的希望
  • 文件格式:.cpp
  • 所需积分:2
 相关标签: 转换 汉字 数字

实例介绍

【实例简介】

这是一个数字转换代码,如果输入壹仟叁佰,输出1300,最多可以输出二十位数字


【实例截图】

from clipboard


from clipboard


【核心代码】



void getChinese( unsigned  int number )
{
 const int size=10;
 int data[size] = {0};
 string str1="零壹贰叁肆伍陆柒捌玖";
 string str2="错拾佰仟萬拾佰仟亿拾";
 int count=0;//计算输入数字的位数,并把每位数保存在数组中
 if( 0 == number )
  cout<<"零"<<endl;
 else{
  while ( count < size  &&  ( 0!=number ) )
  {
   data[count]=number%10;
   number /= 10;
   count ;
  }
 }
 //unsigned int 型对象的值是不可能以0 开头的(非零值),也不可能超出十位,这个判断可以不要?待测试
 if( 0==data[count] && 0!=number )
  cout<<"数字开头不能为 0 ,请重新输入 !"<<endl;
 if( count > size )
  cout<<"输入的数字太大,请重新输入 !"<<endl;

 /*******************************************************************************************/
 /* 这里是算法的核心部分,添加中间有一个零或者相邻不相邻几个零的情况,最后不能输出‘错’字符                                                               */
 /*******************************************************************************************/
 int signZero=0;//标记数字中间为0 的个数
 int printZero=0;//标记是否应该打印‘零’
 while ( --count >= 0 )
 {
  if( 0==data[count])
  {
   signZero ;
   printZero ;
  }
  else
  {
   signZero=0;
  }
  //打印‘零’的情况
  if ( 0==signZero && 0<printZero )
  {
   cout<<GetStringOfCount( str1, 0 );
   printZero=0;
  }
  //数字中间很多0时,避免打印多个‘零’
  if ( 0==signZero || 0 != data[count] )
  {
   cout <<GetStringOfCount( str1, data[count] );
  }
  //1、屏蔽数字 0 之后的计量单位,比如 十、百、千
  //2、当千万位和万位为 0时,打印计量单位
  if(   ( 0!=count && 0!=data[count] )  ||  ( ( 4==count || 8==count ) && 0==data[count] )  )
  {
   cout<< GetStringOfCount( str2 , count );
  }
 }
 cout<<endl;
}
string GetStringOfCount(string &s, size_t index)
{
 short ch;
 string res;
 unsigned cnt = index;
 size_t i=0;
 for( ; i<s.size() && i<cnt; i)
 {
  ch = s.at(i);
  if(ch&0x1000) i, cnt;
 }
 ch = s.at(i);
 if(ch&0x1000) res=s.substr(i,2);
 else res=s.substr(i,1);
 return res;
}


标签: 转换 汉字 数字

实例下载地址

金额大小写转换(阿拉伯数字与汉字转换)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警