数字0到9999转换大写汉字整数程序(C语言实现)
2013-03-21 10:37
483 查看
输入:9001
输出:九千零一
输出:九千零一
#include<stdio.h> #include<string.h> #include<malloc.h> #define DEBUG printf /*========================================================*/ int len_num(int num); //to judge the length of the number char* my_itoa(int num, int len); //to transform the number to a string char* handle_str(char* str_num, int len); //transform num to NUM /*========================================================*/ int main() { float num_test; int num, len; char* str_num; char* str_result; while(1) { printf("Please input a number: "); if(!(scanf("%f", &num_test))) { printf("Invalid:data type not correct.\n"); break; } else { num = (int)num_test; if (num_test != num) { printf("Invalid:number type not correct.\n"); printf("number: %f\n", num_test); } else if (num == 0) { printf("Number: 0\nLength: 1\nResult: 零\n"); } else if (num_test > 9999 || num_test < 0) { printf("Invalid:number overflow.\n"); printf("number: %d\n", num); } else { len = len_num(num); str_num = my_itoa(num, len); str_result = handle_str(str_num, len); printf("Number: %d\nLength: %d\n", num, len); printf("Result: %s\n", str_result); } } } return 0; } /*========================================================*/ /* function: to get the length of the number input : the input number, int num output: the length of the number, int num_len */ int len_num(int num) { int num_len; if(num <= 9999 && num >= 1000) num_len = 4; else if(num <= 999 && num >= 100) num_len = 3; else if(num <= 99 && num >= 10) num_len = 2; else if(num <=9 && num >=0) num_len = 1; return num_len; } /* function: to transform number to a string input : int num, int len output: char* point to a string */ char *my_itoa(int num, int len) { char *temp; int i; temp =(char*)malloc(sizeof(char)*len); for (i = 1; i <= 5; i++) { if(len-i != -1) { temp[len-i] = num % 10 + '0'; // DEBUG("temp%d %c",i,temp[len-i]); num = num / 10; } else return temp; } } /* function: to transform num to NUM input : char* str_num output: None */ char* handle_str(char* str_num, int len) { int i=0, k; char *str_result; static char num_trans[10][4] = {"零","一","二","三","四","五","六","七","八","九"}; static char num_value[4][4] = {"千","百","十",'\0'}; str_result = (char*)malloc(sizeof(char)*32); for(k = 4-len; k <=3 ; k++) { int j; j = str_num[i]-'0'; if(!(str_num[i] == '0' && (str_num[i+1] == '0' || i ==len-1))) strcat(str_result, num_trans[j]); if(j != 0) { strcat(str_result, num_value[k]); } i++; } return str_result; }
相关文章推荐
- 数字0到9999转换大写汉字整数程序(C语言实现)
- 金额从数字转换成中文汉字大写的实现
- 用c语言实现 编写程序数一下1到100的所有整数中出现多少次数字9
- C#数字转换成大写汉字程序
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- java实现数字金额转换成汉字大写金额
- 用python实现把数字人民币金额转换成大写的脚本程序
- JS实现将数字金额转换为大写人民币汉字的方法
- 把一个用阿拉伯数字表示的正整数转换成汉字大写表示
- 写一个程序,语言不限,能将人民币金额从阿拉伯数字转换为大写汉字表示。例如,把1234.56转换为壹仟贰佰叁拾肆圆零伍角陆分。
- C#数字转换成大写汉字程序
- java 实现将String字符串大写中文数字转换成int类型整数
- C语言 阿拉伯数字转换为汉语大写数字金额程序分析及源码
- c语言实现将一个整数转换为字符串
- 数字转换为大写汉字表示(C#和JS函数)
- js实现小写数字转换为大写的方法
- 阿拉伯数字 转换为 汉字数字 算法实现
- C语言-将1到9这九个数字分成三个3位数,要求第一个3位数,正好是第二个3位数的1/2,是第三个3位数的1/3。问应当怎样分,编写程序实现。
- [MSSQL]将整型数字转换为大写汉字
- 整数转换成罗马数字java实现