本文为大一时所写的文章(2017/5/3),文笔还很生疏,在很多问题上认识不深,算是在学校的微信公众号上的一个编程探究模块上的投稿,本人当时也参与了本模块的维护和管理。补档。
首先向大家说一声抱歉,上次因为一些个人原因没有按时更新编程讨论角,下次有什么特殊情况我一定会提前和大家说明原因!
本次的主角是“阿拉伯数字转化为大写汉字”这个算法和代码,在这之前,我们来看看很经典的变量——静态变量(static)和动态变量(auto)
在这里我们先列出静态函数和动态函数的一般声明格式:
Static type name = value——静态函数
Type name = value——动态函数
可见,他们的区别就在于在数据类型前是否有static 的声明。
一、auto的局部变量和全局变量
一般我们在写代码的时候,在数据类型前不加任何说明的时候就是auto变量,这种变量的特点就是在程序执行过程中建立,随函数的调用需要动态的分配存储空间,调用结束释放所占用存储空间,这和函数形参有点相似,如果你在main函数里写一个auto变量,那么在这个程序结束的时候他就会自动释放占用的空间,生存周期是和main函数相同,属于动态局部变量,在未做初始化的时候默认值为垃圾值(即随机数)同样,在用户函数里使用auto函数都认为是局部动态函数,生存周期都在{}内。默认初始值都是随机数。
如果在main函数和用户函数以外的地方的auto就是动态全局变量,她的生存周期是整个源“项目”,即可以被整个项目里的函数进行调用(如果一个源文件有多个文件可以调用那么这些就是一个项目)范围很广,注意,需要在动态全局变量前加上extern声明,表示可用于其它文件中调用。动态全局变量在未进行初始化的情况下值为0.
二、static的局部变量和全局变量
Static的局部变量的作用域为当前函数(main or 用户函数),从定义位置开始,到其所在的{}结束。她的生命周期是程序运行开始到结束,每次调用的时候她的值是不会被初始化的,而是继承上次函数结束时的值,在没有初始化的情况下,值为0。
静态局部变量的使用方法如图所示:

如果是动态局部变量则是:

Static的全局变量位置与动态全局变量相同,但是作用范围只限于本文件,不能被别的文件进行调用,在没有初始化的情况下,值为0。
接下来进入到我们的主角“阿拉伯数字转化为大写汉字”
代码如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{char wei[][4] = {"零","一","二","三","四","五","六","七","捌","玖"};char shu[][4]  =  {"","拾","佰","仟"};char quan[4];  int  num,a;  int flag;    scanf("%d",&num);if( num < 0)exit(-1);if( num > 9999)exit(-1);a = 0;         while(num > 0){quan[a] = num % 10;num /= 10;a++;}flag = 0; for( int i= a -1; i>=0; i--) {if( quan[i] == 1 && i == 1 && a ==2 ) printf("%s",shu[i]);    else if( quan[i] > 0)       printf("%s%s",wei[quan[i]],shu[i]),flag = 0; else if( i > 0 && flag ==0) printf("%s",wei[0]),flag=1; }printf("\n");return 0;
}


在这里因为大写汉字和阿拉伯数字有个明显的区别就是,大写汉字如果在有两个及以上的零在相邻位上只读一个零,所以本程序的关键就在此,我们构建一个开关变量(flag),初始值为0,在上一位是零的话将开关的值改为1,在下一位输出判断的时候,如果也是零则不输出,如果不是零,则将开关的值又调回0。
其他就是数字的录入和输出的方式了,多看就可以了,主要是要有一个开关的解决思路,在以后的类似问题上开关思想将对你程序的优化大有裨益。
由于本人的能力有限,代码难免出现错误,请各位同学斧正!

阿拉伯数字转化为大写汉字相关推荐

  1. 关于阿拉伯数字转化成为大写汉字

    public class MoneyUtil { /** 大写数字 */ private static final String[] NUMBERS = { "零", " ...

  2. 将阿拉伯数字转化成大写的人民币数字

    将阿拉伯数字转化成大写的人民币数字 public  String getNumberToRMB(String m) ... {      String num = "零壹贰叁肆伍陆柒捌玖&q ...

  3. iOS数字金额转化为大写汉字(阿拉巴数字转化为汉字)

    本博文想要解决的问题,是将一串阿拉伯数字(包含小数点)转化为对应的大写汉字. 实现思路如下: 1.将这串阿拉伯数字格式化,只取小数点后两位: 2.将字符串分割为整数部分的子串和小数部分的子串: 3.遍 ...

  4. 一个表格中文字怎么换行_Excel表格中怎样快速将阿拉伯数字转化为大写文字?这样操作一键完成...

    在职场办公中,Excel的使用频率可谓是非常高啦.为了保证工作可以按时完成都会学习一些自己需要的Excel技巧来辅助整理表格.今天小编为大家分享怎样快速将Excel表格中的阿拉伯数字转换成大写文字,一 ...

  5. JSP设置Excel表格换行_Excel中快速将阿拉伯数字转化为大写文字的妙招

    在职场办公中,Excel的使用频率可谓是非常高啦.为了保证工作可以按时完成都会学习一些自己需要的Excel技巧来辅助整理表格.今天小编为大家分享怎样快速将Excel表格中的阿拉伯数字转换成大写文字,一 ...

  6. 数字变成大写的类,把人民币转化为大写汉字

    import  java.math.BigDecimal;  public   class  ConvertNumber  ... {    /** *//** 定义数组存放数字对应的大写 */    ...

  7. mysql大写数字转阿拉伯数字_阿拉伯数字转化为大写

    ``` //人民币金额转大写程序PHP版 //作者:大V[vsxp] $number = $_GET['num'] ? trim($_GET['num']) : 8421; echo Num2Cny: ...

  8. 阿拉伯数字转化为中文汉字(大、小写) - PHP

    代码 function number2Chinese($num, $m = 1) {switch($m) {case 0:$CNum = array(array('零','壹','贰','叁','肆' ...

  9. 大写汉字转为阿拉伯数字

    /*** 大写汉字转为阿拉伯数字*/ public class ChineseChangeToNumber {/*** 中文简体*/public static final String[] RMB_N ...

最新文章

  1. Oracle10g客户端远程连接数据库全过程[转]
  2. Python Cookie HTTP获取cookie并处理
  3. 如何证明在素数p和2p之间存在另一个素数呢?简单却不完备的证明
  4. (转)浅析CSS——元素重叠及position定位的z-index顺序
  5. PHP生成各种验证码和Ajax验证
  6. JFreeChart(七)之气泡图表​​​​​​​
  7. 使用AJAX Toolkit创建新闻列表
  8. 拥抱云原生,Fluid结合JindoFS :阿里云OSS加速利器
  9. mysql shell 所有表_删除mysql数据库中所有表的shell脚本
  10. CCF201312--模拟练习试题参考答案(C++)
  11. 使用一次性密码本通过 SSH 安全登录 Linux
  12. 物联网VSWiFi 两强争霸还是携手并进?
  13. 魅族 android版本升级,魅族系统更新APP
  14. 计算机电脑怎么开热点,电脑怎么设置wifi热点共享
  15. React 中 Twitter 的 SVG 图标 (icons)
  16. *POJ1830 高斯消元
  17. 设计模式的六大设计原则
  18. android(安卓系统)系统下优秀的笔记软件,小筑笔记app下载 小筑笔记(手机笔记本软件) for Android v1.31 安卓手机版 下载-脚本之家...
  19. js获取当前时间的前一天/后一天 ,前一月/后一月
  20. SNN学习笔记-静息电位和平衡电位的理解

热门文章

  1. 微信扫码登入 改变二维码样式
  2. Ubuntu释放缓存/内存和显存
  3. 用idea将一个java文件打包成可执行jar包并能正确运行
  4. 马上就博士毕业了,博士毕业论文外审结果回来了
  5. Revit二次开发之 自定义选项卡排在最前端
  6. php微信公众号支付实例教程,PHP微信公众号支付教程(含图文)
  7. 里约热内卢圣徒java_里约热内卢:圣徒之城
  8. 鸿蒙开发者招募!给后辈的一点建议,终局之战
  9. MP3在线搜索下载程序
  10. mysql和pg数据库表备份及还原