我們在金融機構填寫金額時使用的不是阿拉伯數字,而是中文的大寫數字。
請寫一個程式將數字轉換為中文大寫數字
標準大寫寫法如下:零、壹、貳、參、肆、伍、陸、柒、捌、玖、拾、佰、仟、萬、億
輸入說明 :
整數數字 >=0 且 <=2147483647
輸出說明 :
文字字串
範例輸入 :
12345
10200
範例輸出 :
壹萬貳仟參佰肆拾伍
壹萬零貳佰
提示 :
* 遇到 10 時輸出 『拾』or『壹拾』均可
程式碼 :
#include<stdio.h> #include<string.h> void map(char num) { switch(num) { case '1': printf("壹"); break; case '2': printf("貳"); break; case '3': printf("參"); break; case '4': printf("肆"); break; case '5': printf("伍"); break; case '6': printf("陸"); break; case '7': printf("柒"); break; case '8': printf("捌"); break; case '9': printf("玖"); break; case '0': printf("零"); break; } } int main() { int i,len,zero,check; char num[20]; while(scanf("%s",num)==1) { for(; num[0] == 48; ) { len = strlen(num); for(i=0; i<len; i++) num[i] = num[i+1]; } len = strlen(num); zero = 0; check = 0; for(i=9; i>-1; i--) { if(len > i) { if(num[len-i-1] == '0') zero = 1; else { if(zero) map('0'); zero = 0; map(num[len-i-1]); if(i == 7 || i == 3) printf("仟"); if(i == 6 || i == 2) printf("佰"); if(i == 9 || i == 5 || i == 1) printf("拾"); check = 1; } if(i == 4 && check) { check = 0; printf("萬"); } else if(i == 8 && check) { check = 0; printf("億"); } } } printf("\n"); } return 0; }
http://zerojudge.tw/ShowProblem?problemid=a008
沒有留言:
張貼留言