题解 | #人民币转换#
人民币转换
https://www.nowcoder.com/practice/00ffd656b9604d1998e966d555005a4b
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char number[10][4] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; char unit_num[24][4]={ "分", "角", "元","拾", "佰", "仟","万","拾", "佰", "仟", "亿","拾", "佰", "仟", "兆","拾", "佰", "仟", "京","拾", "佰", "仟"}; long long int a; int b=0; int str_num[20]={0},index=0; scanf("%lld.%d",&a,&b); long long int tmp_a=a; int tmp_b=b; while(tmp_b>0){ str_num[index]=tmp_b%10; index++; tmp_b/=10; } index=2; while(tmp_a>0){ str_num[index]=tmp_a%10; index++; tmp_a/=10; } printf("人民币"); for(int i=index-1;i>=2;i--){ if(str_num[i]==0){//0遇到什么单位都不做输出,1遇到拾不输出 int flag=0; while(i>=0&&str_num[i]==0) { if(flag==0&&(strcmp(unit_num[i], "万")==0 ||strcmp(unit_num[i], "亿")==0 ||strcmp(unit_num[i], "兆")==0 ||strcmp(unit_num[i], "京")==0)){ flag=1; printf("%s",unit_num[i]); } //中途经过这些单位要输出第一个 i--; } if(i>=2){//防止吞掉个位数 if(str_num[i]!=1||strcmp(unit_num[i], "拾")!=0) printf("零%s%s",number[str_num[i]],unit_num[i]); else printf("零拾"); }else printf("元"); } else if(str_num[i]==1&&strcmp(unit_num[i], "拾")==0) printf("拾"); else printf("%s%s",number[str_num[i]],unit_num[i]); } if(b==0) printf("整"); else{ if(str_num[1]!=0) printf("%s%s",number[str_num[1]],unit_num[1]); if(str_num[0]!=0) printf("%s%s",number[str_num[0]],unit_num[0]); } return 0; }