PAT1002找到这个数(Python和C)

读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:

每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10​100​​。

输出格式:

在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:

1234567890987654321123456789

输出样例:

yi san wu
刷PAT的话建议c或者c++,Python和Java数据大的时候可能会超时,接下来的程序都会用c实现,有些可能会搭配Python代码、

题目分析

这道题对输入的数字求和没有什么难度,采用字符串输入形式,对数字求和。因为是字符形式,所以sum求和要减去‘0’。难点在于相应的数字转换汉字,c中可以采用二维数组将0到10的汉字存储进去。接下来是一个循环,求出sum的各位数字,然后存储到数组中。最后输出,另外注意空格的输出。

c代码实现

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int main()

{

	char c[100];

	scanf("%s",c);

	int sum=0;

	for(int i=0;i<strlen(c);i++)

		sum+=c[i]-'0';

	char ex[10][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};

	int list[100]={0},i=0;

	while(sum!=0)

	{

		list[i]=sum%10;

		sum/=10;

		i++;

	}

	for(int j=i-1;j>=0;j--)

		printf("%s%c",ex[list[j]],j==0?'\n':' ');

	return 0;
}

python代码实现

def sum(x):
    y = len(x)
    sum = 0
    for i in range(y):
        sum = sum + eval(x[i])
    return sum
def main():
    x = input("")
    a = sum(x)
    t=0
    l=list(range(1,100))
    ch=('ling','yi','er','san','si','wu','liu','qi','ba','jiu')
    while(a!=0):
        l[t]=a%10
        a=a//10
        t+=1
    print(ch[l[t-1]],end="")
    for j in range((t-2),-1,-1):
        print(" "+ch[l[j]],end="")
main()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值