您的位置:首页 > Web前端

C和指针之函数递归实现把amount表示的值转换为单词形式written_amount(unsigned int amount,char *buffer)

2017-11-11 01:13 405 查看

1、题目

 编写函数 

void written_amount(unsigned int amount,char *buffer); 

它把amount表示的值转换为单词形式,并储存于buffer中。这个函数可以在一个打印支票的程序中使用。例如,如果amount的值是16312,那么buffer中存储的字符串应该是 

SIXTEEN THOUSAND THREE HUNDRED TWELVE




2、代码实现

#include <stdio.h>
#include <string.h>

/**
*它把amount表示的值转换为单词形式,并储存于buffer中。
*这个函数可以在一个打印支票的程序中使用。例如,如果amount的值是16312,
*那么buffer中存储的字符串应该是
*SIXTEEN THOUSAND THREE HUNDRED TWELVE
*
*/
void written_amount(unsigned int amount, char *buffer)
{
char value1_9[10][10] = { "ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE",
"SIX", "SEVEN", "EIGHT", "NINE" };
char value10_19[10][10] = {"TEN", "ELEVEN", "TWELVE", "THIRTEEN", "FOURTEEN", "FIFTEEN",
"SIXTEEN", "SEVENTEEN", "EIGHTEEN", "NINETEEN" };
char value_ty[10][10] = { "", "", "TWENTY", "THIRTY", "FORTY", "FIFTY",
"SIXTY", "SEVENTY", "EIGHTY", "NINETY" };
char value_splite[10][10] = { "HUNDRED", "THOUSAND", "MILLION", "BILLION" };

if (amount == 0)
{
strcat(buffer, value1_9[0]);
return;
}
static int count = 0;
unsigned int tmp = amount / 1000;

if (tmp)
{
++count;
written_amount(tmp, buffer);
}
printf("amount is %d\n", amount);
int val = amount % 1000;
printf("val is %d\n", val);
if (val == 0)
{
count = 0;
return;
}
if (val >= 100)
{
strcat(buffer, value1_9[val / 100]);
strcat(buffer, " ");
strcat(buffer, value_splite[0]);
val %= 100;
}
if (val >= 20 && val <= 99)
{
strcat(buffer, " ");
strcat(buffer, value_ty[val / 10]);
val %= 10;
}
if (val >= 10 && val < 19)
{
strcat(buffer, " ");
strcat(buffer, value10_19[val % 10]);
}
if (val > 0 && val <= 9)
{
strcat(buffer, " ");
strcat(buffer, value1_9[val]);
}
if (count > 0)
{
strcat(buffer, " ");
strcat(buffer, value_splite[count--]);
strcat(buffer, " ");
}
}

int main()
{
unsigned int num;
scanf("%u", &num);
char buffer[100] = {0};
written_amount(num, buffer);
puts(buffer);
}




3、运行结果

1111deMacBook-Pro:dabian a1111$ vim written_amount.c
1111deMacBook-Pro:dabian a1111$ gcc -g written_amount.c -o written_amount
1111deMacBook-Pro:dabian a1111$ ./written_amount
123456789
amount is 123
val is 123
amount is 123456
val is 456
amount is 123456789
val is 789
ONE HUNDRED TWENTY THREE MILLION FOUR HUNDRED FIFTY SIX THOUSAND SEVEN HUNDRED EIGHTY NINE
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐