C语言 阿拉伯数字转换为汉语大写数字金额程序分析及源码
来源:互联网 发布:淘宝追加评价 编辑:程序博客网 时间:2024/05/21 15:45
C语言 阿拉伯数字转换为汉语大写数字金额程序分析及源码
数据结构:用一个整型变量储存输入数字 大家可能会感觉用字符串取位更方便一些··
但是相应的,字符串失去了数字原有的意思 00100和100对于整型变量来说是一样的
可要是让字符串获取还要有更麻烦的分析才能实现整型变量一个赋值就搞定的事
算法:
从最高位到最低位依次打印,穿插拾万仟佰拾,对最灵活的“零”特殊照顾,最后打印“圆整”
依次打印:
五个函数 void shiwan(int );void wan(int );void qian(int );void bai(int ,int );void shi(int ,int );void ge(int ,int );
函数嵌套调用 例如输入100 会调用bai();shi();ge();三个函数 其中bai();调用shi(); shi();调用ge();以此类推
通过void fpanduan() 按输入数字的位数调用
关键:要后输出0:后一位确定有非0数字后在输出前一个0
因为如果先输出0 的话 100会输出成壹佰零元整··多一个零
可是如何后输出0呢?如果本位是0 那就告诉下一位的函数:我是零 你不是零就提前输出一个零再输出你的,你要是0就告诉下一位···以此类推
废话少说 上源码
#include <stdio.h>#define ZERO_TRUE 0 //上一个有0#define ZERO_FALSE 1void welcome();//欢迎欢迎~~ void fpanduan(int );//判断数字位数 ,调用相应函数 int shuzi(int );//打印数字专用 void shiwan(int );void wan(int );void qian(int );void bai(int ,int );void shi(int ,int );void ge(int ,int );int main(){int num;welcome();while(1)//无限循环~想停点叉~ {printf("---------------------------------------------------\n");printf("输入阿拉伯数字\t999999>输入数字>-999999\n");scanf("%d",&num);fpanduan(num);} }void welcome(){printf("---------------------------------------------------\n");printf("\t程序功能:转换阿拉伯数字为汉语大写数字\n");printf("\t最大支持:999999>输入数字>-999999\n");printf("\t结束程序:请直接点叉\n");printf("\t开发人员:blacknet EMail:blacknet99@yahoo.com\n");printf("---------------------------------------------------\n");} void fpanduan(int num){if(num > 999999){printf("太大了啊!请重新输入\n");return;}else if(num > 99999){shiwan(num);}else if(num > 9999){wan(num);}else if (num > 999){qian(num);}//直接调用预设无0else if (num > 99){bai(num,ZERO_FALSE);}else if (num > 9){shi(num,ZERO_FALSE);}else if (num > -1){ge(num,ZERO_FALSE);}else {printf("负"); fpanduan(-num);}//负的就是多输出个负 return;}void shiwan(int num){shuzi(num/100000);//int截断保留十万位,NULL调用shuzi函数 printf("拾");wan(num-100000*(num/100000));// num减掉十万位 传给wan函数 }void wan(int num){shuzi(num/10000);printf("万");qian(num-10000*(num/10000));}void qian(int num ){if(0 == num/1000){bai(num-1000*(num/1000),ZERO_TRUE);}//告诉百位千位是0 else {shuzi(num/1000);printf("仟");bai(num-1000*(num/1000),ZERO_FALSE);}//}void bai(int num ,int zero){if(0 == num/100 ){shi(num-100*(num/100),ZERO_TRUE);}else{if( ZERO_TRUE == zero ) printf("零");shuzi(num/100);printf("佰");shi(num-100*(num/100),ZERO_FALSE);}}void shi(int num ,int zero){if(0 == num/10 ){ge(num-10*(num/10),ZERO_TRUE);}else {if( ZERO_TRUE == zero ) printf("零");shuzi(num/10);printf("拾");ge(num-10*(num/10),ZERO_FALSE);}}void ge(int num ,int zero){if(0 == num){ ;} //如果是0 只输出 圆整else {if( ZERO_TRUE == zero ) printf("零");shuzi(num);}printf("圆整\n");}int shuzi(int num)//只负责打印数字 {switch(num){case 1 :{printf("壹") ;break;}case 2 :{printf("贰") ;break;}case 3 :{printf("叁") ;break;}case 4 :{printf("肆") ;break;}case 5 :{printf("伍") ;break;}case 6 :{printf("陆") ;break;}case 7 :{printf("柒") ;break;}case 8 :{printf("捌") ;break;}case 9 :{printf("玖") ;break;}}}新手学C,欢迎猛喷~
原创,转载请保留我的信息,否则会得尖锐湿疣~~
blacknet
15-01-20
for beibei
0 0
- C语言 阿拉伯数字转换为汉语大写数字金额程序分析及源码
- 阿拉伯数字金额转换为汉语大写
- C语言编程:数字金额转换为中文大写金额
- 阿拉伯数字转换为大写金额
- 把阿拉伯数字的金额转换为中文大写数字
- 阿拉伯数字金额转换为中文大写
- 数字转换为大写金额
- 阿拉伯数字小写金额转换成中文大写金额C程序说明
- C#阿拉伯数字金额转换为中文大写金额
- Java数字金额转换为大写金额
- 正则也很牛,把阿拉伯数字的金额转换为中文大写数字
- Java金额转换_阿拉伯数字转换成中国大写数字
- 阿拉伯数字转换为中国的大写数字
- 阿拉伯数字小写金额转换成中文大写金C额程序说明
- 把阿拉伯数字转换为大写汉字[对应金额]
- Java金额转换为汉语中人民币的大写
- java将金额转换为汉语中大写
- 阿拉伯数字转换成汉语数字
- UVA XYZZY(最短路方法)
- Java类加载器工作原理
- Python学习:raw_input
- 会话标识未更新
- c++ STL系列之一 stack与queue
- C语言 阿拉伯数字转换为汉语大写数字金额程序分析及源码
- MyEclipse 9中安装和配置aptana插件
- pthread的pthread_join()函数理解实验
- 第14题:罗马数字转换成整数
- HttpClient构造post请求,发送一串字符串
- SpringMVC与Struts2的对比
- 路由器端口映射
- sleep和wait的区别
- 模块的安装和使用