全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1229
推到 Plurk!
推到 Facebook!

金額數字轉換大寫函數

 
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-09 09:29:29 IP:61.218.xxx.xxx 未訂閱
金額數字轉換大寫函數    #include  #define TEN "拾" #define HND "佰" #define THU "仟" #define TTH "萬" #define HMI "億" #define FILL(A) if(!zflag) \ strcat(sResult, A); \ break #define FILLW(A) if(!zflag) \ { \ tthflag = 1; \ strcat(sResult, A); \ } \ break #define FILLY(A) if(!zflag) \ { \ hmiflag = 1; \ strcat(sResult, A); \ } \ break void main(int argc, char **argv) { if(argc < 2) { printf("Usage: %s amt\n", argv[0]); exit(0); } PrintBigMoney(argv[1]); exit(0); } int PrintBigMoney(char *source) { char sResult[300], intpart[30], decpart[20], *pstr; char *BigNum[] = {"零","壹","貳","?","肆","伍","陸","柒","捌","玖"}; int i, intlen, p_int = 0, zheadflag = 1, zflag = 0; int tthflag = 0, hmiflag = 0; memset(sResult, '\0', sizeof(sResult)); strcpy(intpart, source); if (intpart[p_int] == '-') { strcat(sResult, "負"); p_int ; } pstr = (char *)strstr(intpart p_int, "."); if (pstr != NULL) { pstr[0] = '\0'; strcpy(decpart, pstr 1); } intlen = strlen(intpart); for(i = 0; i < intlen; i ) { if(intpart[i] < '0' || intpart[i] > '9') { printf("part of int is not valid\n"); exit(0); } } for(i = 0; i < strlen(decpart); i ) { if(decpart[i] < '0' || decpart[i] > '9') { printf("part of dec is not valid\n"); exit(0); } } if(intlen > 12) printf("Warning: number is too large to translate, result is pos sibly not accuracy!\n"); if(atol(intpart) == 0) strcat(sResult, BigNum[0]); for (i = p_int; i < intlen; i ) { if (intpart[i] == '0') { if(zheadflag) continue; else zflag = 1; } else { zheadflag = 0; if(zflag) { strcat(sResult, BigNum[0]); zflag = 0; } strcat(sResult, BigNum[intpart[i] - '0']); } switch(intlen - i) { case 2: FILL(TEN); case 6: FILLW(TEN); case 10: FILLY(TEN); case 14: FILLW(TEN); case 18: FILLY(TEN); case 3: FILL(HND); case 7: FILLW(HND); case 11: FILLY(HND); case 15: FILLW(HND); case 19: FILLY(HND); case 4: FILL(THU); case 8: FILLW(THU); case 12: FILLY(THU); case 16: FILLW(THU); case 20: FILLY(THU); case 5: case 13: if(!zflag) strcat(sResult, TTH); else { if(tthflag) strcat(sResult, TTH); } break; case 9: tthflag = 0; case 17: strcat(sResult, HMI); break; } } strcat(sResult, "元"); if ((strlen(decpart) != 0) && (atol(decpart) != 0)) { for (i = 0; i < strlen(decpart); i ) { if (decpart[i] >= '0' && decpart[i] <= '9') strcat(sResult, BigNum[decpart[i] - '0']); if (i == 0) strcat(sResult, "角"); if (i == 1) strcat(sResult, "分"); } } else strcat(sResult, "整"); printf("%s\n", sResult); } 聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]---
系統時間:2024-04-24 13:23:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!