编写一个程序将一个数字串转换为相应的数值

编写一个程序将一个数字串转换为相应的数值,第1张

是什么意思?是不是将全数字的字符串转换成数值啊?C#:string stNum=123;int32 iNum=ConvertToInt32(stNum);iNum输出的结果就是int32的数值。

思路: 分解每位的数,带上权重

#include <stdioh>

#include <stdlibh>

#include "stringh"

void convert_num(int n,char buf)

{

switch(n)

{

case 0:

sprintf(buf,"%s","零");

break;

case 1:

sprintf(buf,"%s","一");

break;

case 2:

sprintf(buf,"%s","二");

break;

case 3:

sprintf(buf,"%s","三");

break;

case 4:

sprintf(buf,"%s","四");

break;

case 5:

sprintf(buf,"%s","五");

break;

case 6:

sprintf(buf,"%s","六");

break;

case 7:

sprintf(buf,"%s","七");

break;

case 8:

sprintf(buf,"%s","八");

break;

case 9:

sprintf(buf,"%s","九");

break;

}

}

void convert(int n,int power,char buf)

{

char temp[5]={"\0"};

convert_num(n,temp);

switch(power)

{

case 0:

sprintf(buf,"%s",temp);

break;

case 1:

sprintf(buf,"%s十",temp);

break;

case 2:

sprintf(buf,"%s百",temp);

break;

case 3:

sprintf(buf,"%s千",temp);

break;

case 4:

sprintf(buf,"%s万",temp);

break;

case 5:

sprintf(buf,"%s十",temp);

break;

case 6:

sprintf(buf,"%s百",temp);

break;

case 7:

sprintf(buf,"%s千",temp);

break;

}

}

int main(int argc, char argv[]) {

char c[10]={"\0"};

char v[50]={"\0"};

scanf("%s",c);

int len=strlen(c);

int i,power;

for(i=0;i<len;i++)

{

char buf[10]={"\0"};

convert(c[i]-'0',len-i-1,buf);

strcat(v,buf);

}

printf("\n\n%s",v);

return 0;

}

拿分来吧。。。不容易啊。,。。。多给点加分吧

package number;

import javautilHashMap;

public class NumberFormat {

private static javautilMap<String, String> SmallToBigMap = new HashMap<String, String>();

static {

SmallToBigMapput(StringvalueOf(0), "零");

SmallToBigMapput(StringvalueOf(1), "一");

SmallToBigMapput(StringvalueOf(2), "二");

SmallToBigMapput(StringvalueOf(3), "三");

SmallToBigMapput(StringvalueOf(4), "四");

SmallToBigMapput(StringvalueOf(5), "五");

SmallToBigMapput(StringvalueOf(6), "六");

SmallToBigMapput(StringvalueOf(7), "七");

SmallToBigMapput(StringvalueOf(8), "八");

SmallToBigMapput(StringvalueOf(9), "九");

SmallToBigMapput(StringvalueOf(10), "十");

SmallToBigMapput(StringvalueOf(100), "百");

SmallToBigMapput(StringvalueOf(1000), "千");

SmallToBigMapput(StringvalueOf(10000), "万");

SmallToBigMapput(StringvalueOf(100000000), "亿");

}

public static String format(String num) {

// 先将末尾的零去掉

String numString = StringvalueOf(num)replaceAll("[0]+$", "");

// 分别获取整数部分和小数部分的数字

String intValue;

String decValue = "";

if (numStringindexOf("") != -1) {

intValue = StringvalueOf(num)split("\\")[0];

decValue = StringvalueOf(num)split("\\")[1];

} else {

intValue = StringvalueOf(num);

}

// 翻译整数部分。

intValue = formatInteger(IntegerparseInt(StringvalueOf(intValue)));

// 翻译小数部分

decValue = formatDecnum(decValue);

String resultString = intValue;

if(!decValueequals(""))

resultString = resultString + "点" + decValue;

return resultString;

}

/

将阿拉伯整数数字翻译为汉语小写数字。 其核心思想是按照中文的读法,从后往前每四个数字为一组。每一组最后要加上对应的单位,分别为万、亿等。

每一组中从后往前每个数字后面加上对应的单位,分别为个十百千。 每一组中如果出现零千、零百、零十的情况下去掉单位。

每组中若出现多个连续的零,则通读为一个零。 若每一组中若零位于开始或结尾的位置,则不读。

@param num

@return

/

public static String formatInteger(int num) {

int unit = 10000;

int perUnit = 10000;

String sb = new String();

String unitHeadString = "";

while(num > 0){

int temp = num % perUnit;

sb = formatIntegerLess10000(temp) + sb;

// 判断是否以单位表示为字符串首位,如果是,则去掉,替换为零

if(!unitHeadStringequals(""))

sb = sbreplaceAll("^" + unitHeadString, "零");

num = num / perUnit;

if(num > 0)

{

// 如果大于当前单位,则追加对应的单位

unitHeadString = SmallToBigMapget(StringvalueOf(unit));

sb = unitHeadString + sb;

}

unit = unit perUnit;

}

return sb;

}

/

将小于一万的整数转换为中文汉语小写

@param num

@return

/

public static String formatIntegerLess10000(int num) {

StringBuffer sb = new StringBuffer();

for (int unit = 1000; unit > 0; unit = unit / 10) {

int _num = num / unit;

// 追加数字翻译

sbappend(SmallToBigMapget(StringvalueOf(_num)));

if (unit > 1 && _num > 0)

sbappend(SmallToBigMapget(StringvalueOf(unit)));

num = num % unit;

}

// Systemoutprintln(sbtoString()replaceAll("[零]+",

// "零")replaceAll("^零", "")replaceAll("零$", ""));

// 先将连续的零联合为一个零,再去掉头部和末尾的零

return sbtoString()replaceAll("[零]+", "零")replaceAll("^零", "")

replaceAll("零$", "");

}

public static String formatDecnum(String num){

StringBuffer sBuffer = new StringBuffer();

char[] chars = numtoCharArray();

for(int i = 0; i < numlength(); i ++){

sBufferappend(SmallToBigMapget(StringvalueOf(chars[i])));

}

return sBuffertoString();

}

public static void main(String[] args) {

// NumberFormatformatInteger(1000);

Systemoutprintln(NumberFormatformat("123123"));

Systemoutprintln(NumberFormatformat("101"));

Systemoutprintln(NumberFormatformat("1001"));

Systemoutprintln(NumberFormatformat("10100"));

Systemoutprintln(NumberFormatformat("1000000001123"));

}

}

给你一个现成的,加两个控件,一个Label1,一个Text1:

Private Sub Form_Load()

'初始化设置

Text1MaxLength = 16

Text1Text = ""

Label1Caption = ""

Label1AutoSize = True

Label1BorderStyle = 1

Label1FontSize = 18

End Sub

Private Sub Text1_Change()

'调用转换子过程

Label1Caption = CChinese(Text1Text)

End Sub

Private Function CChinese(StrEng As String) As String

'验证数据

If Not IsNumeric(StrEng) Then

If Trim(StrEng) <> "" Then MsgBox "无效的数字"

CChinese = ""

Exit Function

End If

'定义变量

Dim intLen As Integer, intCounter As Integer

Dim strCh As String, strTempCh As String

Dim strSeqCh1 As String, strSeqCh2 As String

Dim strEng2Ch As String

strEng2Ch = "零壹贰叁肆伍陆柒捌玖"

strSeqCh1 = " 拾佰仟 拾佰仟 拾佰仟 拾佰仟"

strSeqCh2 = " 万亿兆"

'转换为表示数值的字符串

StrEng = CStr(CDec(StrEng))

'记录数字的长度

intLen = Len(StrEng)

'转换为汉字

For intCounter = 1 To intLen

'返回数字对应的汉字

strTempCh = Mid(strEng2Ch, Mid(StrEng, intCounter, 1) + 1, 1)

'若某位是零

If strTempCh = "零" And intLen <> 1 Then

'若后一个也是零,或零出现在倒数第1、5、9、13等位,则不显示汉字“零”

If Mid(StrEng, intCounter + 1, 1) = "0" Or (intLen - intCounter + 1) Mod 4 = 1 Then strTempCh = ""

Else

strTempCh = strTempCh & Trim(Mid(strSeqCh1, intLen - intCounter + 1, 1))

End If

'对于出现在倒数第1、5、9、13等位的数字

If (intLen - intCounter + 1) Mod 4 = 1 Then

'添加位" 万亿兆"

strTempCh = strTempCh & Trim(Mid(strSeqCh2, (intLen - intCounter) \ 4 + 1, 1))

End If

'组成汉字表达式

strCh = strCh & Trim(strTempCh)

Next

CChinese = strCh

End Function

以上就是关于编写一个程序将一个数字串转换为相应的数值全部的内容,包括:编写一个程序将一个数字串转换为相应的数值、在c语言环境中,将数字转化为金额的程序怎么写,如将12345转化为一万两千三百四十五,求解、java数字转换等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10637904.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存