人民币金额大写
来源:互联网 发布:verilog语言算法 编辑:程序博客网 时间:2024/04/29 00:33
题目描述:
在与财务相关的应用中,经常会用到人民币金额的大写,比如发票的打印程序。本题的任务是:从键盘输入一个十亿以内的正整数(int类型),把它转换为人民币金额大写(不考虑用户输入错误的情况)。比如,用户输入:35201,程序输出:叁万伍仟贰佰零壹用户输入:30201,程序输出:叁万零贰佰零壹用户输入:30001,程序输出:叁万零壹用户输入:31000,程序输出:叁万壹仟用户输入:120023201,程序输出:壹亿贰仟零贰万叁仟贰佰零壹用户输入:120020001,程序输出:壹亿贰仟零贰万零壹用户输入:100000001,程序输出:壹亿零壹可以看到,在万后满千位,则不加零,否则要补零,但不要出现类似“零零”的情况。在亿后满千万位,则不加零,否则要补零,但整个“万档”没有数字时,“万”字省去。代码:
#include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]){ char data[10]; int i; char zi[10][3]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; gets(data); int len=strlen(data); int flag=1; for(i=0;i<strlen(data);i++){ if(data[i]-'0'==0){ //过滤重复的0 int j=i+1; while(data[j]-'0'==0&&j<len){ j++;} if(j==len){ //最后全为0的时候直接输出 if(len-i>=8){ printf("亿");i=j;break;} else if(len-i>=4&&len-i<8){ printf("万");i=j;break;} } if(len-i>=9&&len-j<=5){ //万档全为0的时候 flag=0;} if(data[i+1]-'0'!=0) //重复的0,只在最后一个输出一个零 printf("零"); } else{ switch ((strlen(data)-1-i)%4+1){ //取模,四位一次判断位数 case 1: printf("%s",zi[data[i]-'0']);break; case 2: printf("%s拾",zi[data[i]-'0']);break; case 3: printf("%s佰",zi[data[i]-'0']);break; case 4: printf("%s仟",zi[data[i]-'0']);break;} } if((strlen(data)-i-1)==4){ if(flag) //万档不全为0 printf("万");} if((strlen(data)-i-1)==8) printf("亿"); } system("PAUSE"); return 0;}
0 0
- 人民币大写金额函数
- 人民币大写金额转换
- 人民币金额大写
- 人民币金额大写
- 人民币金额大写
- 人民币金额大写
- 人民币金额大写
- C#人民币金额大写
- 人民币金额大写
- 人民币小写金额转大写
- 人民币小写金额转大写
- 人民币小写金额转大写
- 人民币中文大写转金额
- 人民币小写金额转大写
- C#转换人民币大写金额
- C#人民币金额大写转换
- 蓝桥杯之《人民币金额大写》
- C# 人民币金额转大写
- 基于Tomcat容器的ActiveMQ简单实例
- C++复习1
- oracle11g ORA-12154: TNS:could not resolve the connect identifier specified解决办法
- Shape Drawable的学习
- POJ 3278 Catch That Cow
- 人民币金额大写
- nyoj42(并查集解决欧拉回路)
- Ganymed SSH-2 for Java系列8之SFTPv3Client说明
- Spring JMS 整合Tomcat和ActiveMQ
- mysql游标的使用
- linux下进行sd卡的分区,挂载,格式化
- Information Retrieval Ranked List 模型
- Linux shell中su 和 su - 的区别
- spring传播特性与隔离级别简介