题解 | #人民币转换#
人民币转换
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;
}

安克创新 Anker公司福利 849人发布