我們在金融機構填寫金額時使用的不是阿拉伯數字,而是中文的大寫數字。
請寫一個程式將數字轉換為中文大寫數字
標準大寫寫法如下:零、壹、貳、參、肆、伍、陸、柒、捌、玖、拾、佰、仟、萬、億
輸入說明 :
整數數字 >=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
沒有留言:
張貼留言