考试题目和要点:
- 中文大写金额数字前应标明“人民币”字样。中文大写金额数字应用壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整等字样填写。(30分)
- 中文大写金额数字到“元”为止的,在“元”之后,应写“整字,如¥ 532.00应写成“人民币伍佰叁拾贰元整”。在”角“和”分“后面不写”整字。(30分)
- 阿拉伯数字中间有“0”时,中文大写要写“零”字,阿拉伯数字中间连续有几个“0”时,中文大写金额中间只写一个“零”字,如¥6007.14,应写成“人民币陆仟零柒元壹角肆分“。(40分)
输入描述:
输入一个double数
输出描述:
输出人民币格式
示例1
输入
151121.15
输出
人民币壹拾伍万壹仟壹佰贰拾壹元壹角伍分
#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main()
{char number[]="零壹贰叁肆伍陆柒捌玖拾佰仟万亿整分角元";int seq[200];char str[200];char spp[200];double num;int intNum;int dbNum;printf("exit by -1.\n");while(1){printf("input a number:\n->");scanf("%lf",&num);if(num==-1)break;intNum=(int)num;num-=intNum;num*=100;dbNum=(int)(num+0.5);int len=0;while(intNum>0){str[len++]=intNum%10+'0';intNum/=10;}str[len]='\0';int p=0;int flag=1;for(int i=len-1; i>=0; i--){if(i%4==3)flag=1;if(str[i]=='0'){flag=0;if(i==8)seq[p++]=14;if(i==4)seq[p++]=13;if(i==0)seq[p++]=18;continue;}if(str[i]!='0'&&flag==0){seq[p++]=0;flag=1;}seq[p++]=str[i]-'0';if(i%4>0)seq[p++]=i%4+9;if(i==8)seq[p++]=14;if(i==4)seq[p++]=13;if(i==0)seq[p++]=18;}if(dbNum==0)seq[p++]=15;else if(dbNum<10){seq[p++]=dbNum;seq[p++]=16;}else if(dbNum==10){seq[p++]=dbNum/10;seq[p++]=17;}else{seq[p++]=dbNum/10;seq[p++]=17;seq[p++]=dbNum%10;seq[p++]=16;}int l=0;for(int i=0; i<p; i++){spp[l++]=number[seq[i]*2];spp[l++]=number[seq[i]*2+1];}spp[l]='\0';printf("print:\n->人民币%s\n",spp);}return 0;
}