会计记账
来源:互联网 发布:网络大电影项目策划书 编辑:程序博客网 时间:2024/04/28 20:13
闲来无聊,写一个将任意大的数字转化成大写汉子的程序。
没错,就是会计账本,支票单上的那种大写的金额。
例如:
数字:193817071803800182801088108
大写:壹佰玖拾叁亿捌仟壹佰柒拾万柒仟壹佰捌拾亿叁仟捌佰万壹仟捌佰贰拾捌亿零壹佰零捌万捌仟壹佰零捌
代码完整代码如下:
#include <stdio.h>#include <string.h>static const char code[9][4]= {"壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};void bit_4(char * s, int n){ int f = 0; switch (n){ case 4: if (s[0] != '0'){ printf("%s仟", code[s[0] - 49]); } f = 1; s += 1; case 3: if (s[0] != '0'){ printf("%s佰", code[s[0] - 49]); } else if (s[1] != '0') { printf("零"); } f = 1; s += 1; case 2: if (s[0] != '0'){ if (s[0] - 49 > 0 || f == 1){ printf("%s拾", code[s[0] - 49]); } else{ printf("拾"); } } else if (s[1] != '0'){ printf("零"); } s += 1; case 1: if (s[0] != '0'){ printf("%s", code[s[0] - 49]); } default: break; }}void bit_all (char * s, int n){ if (s[0] == '0'){ while (s[0] == '0') { s += 1; n -= 1; } if (n > 0){ printf("零"); } } if (n > 8){ bit_all(s, n - 8); printf("亿"); bit_all(s + n - 8, 8); } else if (n > 4){ bit_all(s, n - 4); printf("万"); bit_all(s + n - 4, 4); } else if (n > 0){ bit_4(s, n); }}int main(int argc, char *argv[]){ int n, i; char s[1000] = {'\0'}; fgets(s, 1000, stdin); n = strlen(s); s[n - 1] = '\0'; n = strlen(s); for (i = 0; i < n; i++){ if (s[i] > '9' || s[i] < '0'){ return -1; } } for (i = 0; i < n && s[i] == '0'; i += 1, n -= 1); bit_all(&s[i], n); printf("\n"); return 0;}
1 0
- 会计记账
- 会计手工记账流程
- 番茄会计记账软件发布
- 几个会计记账原则备注
- 会计记忆总结之三:会计等式与复式记账
- 番茄会计记账软件源代码发布
- 3.会计等式与复式记账
- (5)会计记账机场&会计信息质量要求
- 代理记账8个常见的会计结转
- 会计代账的复式记账法是什么?
- 会计假设、会计要素、借贷记账法、会计科目和会计账户
- 记账
- 记账
- 会计
- 会计
- 会计
- 会计
- 会计----会计帐薄
- ORA-12154: TNS: 无法解析指定的连接标识符
- init 和 initWithCapacity
- TCP,IP详解,卷一:协议学习笔记之第十七章 TCP:传输控制协议
- Hbuider hybrid app开发之检查网络等js方法
- 搜狗 语言栏 任务栏
- 会计记账
- Protocol Buffers代替JSON 的五个原因
- OCP-1Z0-051-2015-55题
- 关于类型转换
- Java性能调优笔记
- 伺服tips
- HTTP Status 500 - Error instantiating servlet class
- OpenGL超级宝典笔记——GLSL语言基础(转)
- qsetting读取ini文件