python/C++将数字转换为汉字(3个程序)

将数字转换为汉字,Python/C++三种方式实现

题目:
请实现一个函数, 输入一个小于100000000(一亿)的自然数,并在屏幕上打印这个数字的中文写法。(20分)

不同时间段不同实现

1. 24年c++实现:
string numToChinese(int num) { //数字转汉字
	string result = "";
	vector<string> chins = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
	vector<string> measures = { "","拾", "佰","仟"};
	vector<string> measures2 = { "","万", "亿" ,"万亿"};
	int length = 0;
	for (int i = 1; i <= num; i*=10) {
		length++;
	}
	cout << length << endl;
	int zero_count = 0;
	for (int i = length-1, new_num=num; i > 0; i--) {
		int t = pow(10, i);
		int inte = new_num / t;	//整数部分
		int rema = new_num % t;	//余数部分
		new_num = rema;
		if (inte == 0) {
			zero_count++;
			if ((i) % 4 == 0) {
				result += measures2[(i) / 4]; //measures2
				zero_count = 0;
			}
			continue;
		}else {
			if (zero_count >0) {
				result += chins[0];
			}
			result += chins[inte];
			result += measures[i % 4];  //measures
			if ((i) % 4 == 0) {
				result += measures2[(i) / 4]; //measures2
			}
			zero_count=0;
		}
		if (i == 1&& inte!=0) {
			result += chins[rema];
		}
	}

	return result;
}

2. 20年Python实现


num=input()
num=str(num)
w=['零','一','二','三','四','五','六','七','八','九']
n=['千','百','十','','千','百','十','']

#100000000

def trans(num):
    lengt=len(num)
    if lengt>8:
        return "超出大小"
    str=''
    islastIsEro=False
    i=0 
    while i<lengt:
        #print(num[i])
        tmp=int(num[i])
        if tmp==0:
            if islastIsEro != True:
                str+=w[tmp]
                #str+=n[8-lengt+i]
                islastIsEro = True
            if lengt-i==5:
                if islastIsEro == True:
                    str=str[:-1]
                str+='万'
        else :
            str+=w[tmp]
            str+=n[8-lengt+i]
            islastIsEro=False
            if lengt-i==5:
                if islastIsEro == True:
                    str=str[:-1]
                str+='万'
        
        
        i+=1
    if str[-1]==w[0]:
        str=str[:-1]
    return str
        
print(trans(num))

3. 18年Python实现:

#!/usr/bin/env python
# coding=utf-8
countStr=["","万","亿","","千","百","十",""]
numberStr=["零","一","二","三","四","五","六","七","八","九"]
num=10100000
def numToStr(number):
	nu=str(number)
	string=""
	i=1
	iszero=0
	flag=0
	iscount=0
	while i<=len(nu):
		buf=""
		if nu[-i]!="0":
			if i%4==0:
				buf=numberStr[int(nu[-i])]+countStr[-4]
			else:
				buf=numberStr[int(nu[-i])]+countStr[-(i%4)]
		if (i-1)%4==0 :
			buf=buf+countStr[(i-1)//4]
		if  iszero==1 and  flag==1 and iscount==0:
			if nu[-i]!="0"or (i-1)%4==0:
				buf=buf+numberStr[0]
				iszero=0
		if (i-1)%4==0:
			iscount=1
		if nu[-i]=="0" :                              
			iszero=1
		else: 
			flag=1
			iscount=0
			iszero=0
		string=buf+string
		i+=1
	return string
a=input("输入一个数字")
#a=input("in")
a=str(a)
print(numToStr(a))
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值