文章介绍了使用c语言将中文字符串转换成数值变量的思路和具体代码
C语言写中文数字字符转数值变量
最近突发奇想:程序中要是输入一串中文数字,如“十万”就能自动识别转换成数值100000储存到变量里该多好。
也许你会说,那很简单啊,先将中文字符分开,再各自识别成数值,最后乘上位数相加就行了。可是实际操作时你会发现这并不容易。比如“一亿三千五百万”中,如何确定“三”属于千万位的?或者我想让程序更智能化一些,同时实现如“一百三十”=“一三零”=“1百3”=“百三”=130,那就不会那么简单了。
为了实现这一转换,可以按以下思路编写:
1.可以用两个数组分别储存单位和每个单位对应的数字。其中不同的单位用不同的数值标识。再记录下下标长度。
2.然后将输入的中文数字整理成这种形式:*万*百*个。其中*代表一个正整数(可以大于10),万、百、个代表单位。比如:“一亿五十六万三千”整理成1亿56万3千。这个过程最好使用递归。接着可以将数值相乘叠加。
3.最后,为了处理如“二百五”=250的情况,还要检索下“百”位后是否还有“零”。
下面给出详细代码以供参考:
#define MAX 32
//先定义支持的中文符号:(单位数值由小到大排列,方便判断单位和数值大小)
char _NUMBER[59]="零一壹二贰三叁四肆五伍六陆七柒八捌九玖十拾廿百佰千仟万兆亿";
//递归辅助函数,
double _Num(double *num,char *wei,char len)//参数分别对应按字符识别好的数字&#x