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
相关文章推荐
- 题目如下:编写函数 void written_amount(unsigned int amount,char *buffer); 它把amount表示的值转换为单词形式,并
- C和指针之字符串实现my_strrchr(char *str, int ch)的函数
- 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中 的字符串操作函数。
- C语言:编写reverse_string(char * string)(递归实现)函数,将参数字符串中的字符反向排列
- warning C4407: 在指向成员表示形式的不同指针之间进行转换,编译器可能生成不正确的代码
- 继续算法课的学习!归并排序的模版函数的递归实现(merge函数用两个来实现,记得检查左右边界指针的范围哦)
- 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。
- 用递归的思想写编写一个函数reverse_string(char * string)实现字符串反向输出和反向排列
- C语言 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列
- 设计函数char *insert(s1,s2,n),用指针实现在字符串s1中的指定位置n处插入字符串s2
- 问题九:编写函数stringcat,实现字符串的连接,程序中需要使用指针形式访问字符串
- C语言:编写reverse_string(char * string)(递归实现)函数,将参数字符串中的字符反向排列
- 将字符串形式输入的比特串转换为相应的十六进制表示的函数
- //4. 编写一个函数reverse_string(char * string)(递归实现) //实现:将参数字符串中的字符反向排列。 //要求:不能使用C函数库中的字符串操作函数。
- 编写一个函数reverse_string(char * string)(递归实现)
- 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。
- 【c语言】编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。
- 一只程序猿的养成日记 第一章 第十三节 编写一个函数reverse_string(char * string)(递归实现)
- 在PHP中,通过filesize函数可以取得文件的大小,文件大小是以字节数表示的。如果要转换文件大小的单位,可以自己定义函数来实现。
- 编写一个函数reverse_string(char * string)(递归实现)