C和指针之函数递归实现把amount表示的值转换为单词形式written_amount(unsigned int amount,char *buffer)
来源:互联网 发布:现在淘宝要怎么做 编辑:程序博客网 时间:2024/05/22 06:55
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.c1111deMacBook-Pro:dabian a1111$ gcc -g written_amount.c -o written_amount1111deMacBook-Pro:dabian a1111$ ./written_amount123456789amount is 123val is 123amount is 123456val is 456amount is 123456789val is 789ONE HUNDRED TWENTY THREE MILLION FOUR HUNDRED FIFTY SIX THOUSAND SEVEN HUNDRED EIGHTY NINE
阅读全文
0 0
- C和指针之函数递归实现把amount表示的值转换为单词形式written_amount(unsigned int amount,char *buffer)
- 题目如下:编写函数 void written_amount(unsigned int amount,char *buffer); 它把amount表示的值转换为单词形式,并
- C和指针之字符串实现my_strrchr(char *str, int ch)的函数
- C语言unsigned char、char与int之间的转换
- unsigned char类型指针与int型数据的转换
- 将char转换为unsigned int时
- 把int转换为char把int转换为char
- C和指针第七章written_amount C++实现
- char 和 unsigned 与int 之间的转换
- char 和 unsigned 与int 之间的转换
- [Algorithms, C] long2char: 自己用C写来玩玩的整形转化为字符串函数 (递归和迭代两种实现): void long2char(long from, char *to, int n);
- 补码和数的转换(unsigned/char|int)
- Java的Calendar.add(int field,int amount)
- 把ImageDib的unsigned char* m_pImgData转换为IplImage的char* imageData
- C语言 数组char a[4] 保存了一个数据,怎么转换为unsigned int呢 ?
- 【C语言】【笔试题】实现一个函数int my_atoi(char s[]),可以将一个字符串转换为对应的整数。
- 【C语言】【笔试题】实现一个函数int my_atoi(char s[]),可以将一个字符串转换为对应的整数。
- C语言之unsigned int和int的运算
- CCF-训练50题-NO.11-身份证校验
- 深度学习与计算机视觉 看这一篇就够了
- 移动端页面自适应
- CCF-训练50题-NO.12-多项式加法
- D
- C和指针之函数递归实现把amount表示的值转换为单词形式written_amount(unsigned int amount,char *buffer)
- linux自动安装php7.2.0脚本
- 双网卡配置不同路由实现内外网同时访问
- 51Nod-1054-最长等差数列
- 好烦啊,你一点都不在乎
- CCF-训练50题-NO.13-数码管
- ZUFEOJ 2445 数字旋转【DP】
- CCF-训练50题-NO.14-字母排列
- Android MVVM架构模式(一)