#include <stdlib.h> #include <stdio.h> #include <string.h> char* point[] = {"角", "分"}; char* unit[] = {"仟", "佰", "拾"}; char* num[] = {"壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; void handlePoint(char* ref, int flag) { if(flag) { printf("元"); } int i = 0; while(ref[i] == '0') { i++; } if(i > 1) { if(flag) printf("整"); } else { int j = 0; int t; while(j < 2) { t = ref[j] - '0'; if(t != 0) { printf("%s%s", num[t - 1], point[j]); } j++; } } } int isInt(int arr, int i) { int num = 1; while(i) { num *= 10; i--; } return (arr % num); } void handle(int arr, int order) { if(arr == 0) { return; } int money[4]; money[0] = arr / 1000; money[1] = (arr / 100) % 10; money[2] = (arr / 10) % 10; money[3] = arr % 10; int tag1 = 0, tag2 = 1; for(int i = 0; i < 3; i++) { if(order == 1) { if(money[i] != 0) { printf("%s%s", num[money[i] - 1], unit[i]); tag1 = 1; if(isInt(arr, 3-i) == 0) { return; } } else if(tag1) { printf("零"); tag1 = 0; } } else { if(money[i] != 0) { if(tag2 == 0) { printf("零"); } printf("%s%s", num[money[i] - 1], unit[i]); if(isInt(arr, 3-i) == 0) { return; } tag2 = 1; } else if(tag2) { tag2 = 0; } } } if(money[3] != 0) { if(tag2 == 0 && order != 1) { printf("零"); } printf("%s", num[money[3] - 1]); } } void handleThous(int arr, int* flag) { if(arr == 0) { *flag = 0; return; } handle(arr, 1); } void handleWan(int arr, int* flag) { if(arr == 0) { return; } int pre = arr / 10000; int suf = arr - pre * 10000; handle(pre, 1); printf("万"); handle(suf, 2); } void handleWanT(int arr, int* flag) { if(arr == 0) { return; } int pre = arr / 10000; int suf = arr - pre * 10000; handle(pre, 2); printf("万"); handle(suf, 2); } void handleYi(long arr, int* flag) { int yi = (int)(arr / 100000000); handle(yi, 1); printf("亿"); int wan = (int)(arr - yi * 100000000); handleWanT(wan, flag); } void handleWanYi(long arr, int* flag) { int yi = (int)(arr / 100000000); handleWan(yi, flag); printf("亿"); int wan = (int)(arr - yi * 100000000); handleWanT(wan, flag); } int main(void) { char va[50]; scanf("%s", va); int i = 0; while(va[i] != '.') i++; int len = i; char* ref = va+i+1; char intec[len]; strncpy(intec, va, len); long inte = atol(va); int flag = 1; printf("人民币"); if(len <= 4 && len > 0) { handleThous(inte, &flag); } else if (len > 4 && len <= 8) { handleWan(inte, &flag); } else if (len > 8 && len <= 12){ handleYi(inte, &flag); } else { handleWanYi(inte, &flag); } handlePoint(ref, flag); printf("\n"); return 0; }