PAT乙级1002 写出这个数 (20 分)

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT乙级1002 写出这个数 (20 分)相关的知识,希望对你有一定的参考价值。

在这里插入图片描述
https://pintia.cn/problem-sets/994805260223102976/problems/994805324509200384

朴素写法: 25ms

#include<cstdio>
#include<iostream>
using namespace std;
int main(void)
{
    char a[10000];
    int b[1005]={0};
    long int sum=0;
    cin>>a;
    int i=0;
    while(a[i]!='\\0')
    {
        sum=sum+a[i]-'0';
        i++;
    }
    i=0;
    if(sum==0)
    {   	
		printf("ling\\n");
    	return 0;
    }
    while(sum)
    {
        b[i]=sum%10;
        sum=sum/10;
        i++;
    }
    for(i=i-1;i>=0;i--)
    {
        switch(b[i])
        {
            case 1:
                printf("yi");
                break;
            case 2:
                printf("er");
                break;
            case 3:
                printf("san");
                break;
            case 4:
                printf("si");
                break;
            case 5:
                printf("wu");
                break;
            case 6:
                printf("liu");
                break;
            case 7:
                printf("qi");
                break;
            case 8:
                printf("ba");
                break;
            case 9:
                printf("jiu");
                break;
            default:
                printf("ling");              
        }
        if(i!=0)
            printf(" ");
    }
    printf("\\n");
    return 0;
}

精简写法: 20ms

#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
string str[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
string ans[100];
int main(void)
{
	string s; cin>>s;
	int sum=0;
	for(int i=0;i<s.size();i++) sum+=s[i]-'0';
	int k=0;
	while(sum)
	{
		ans[k++]=str[sum%10];
		sum=sum/10;
	}
	for(int i=k-1;i>=0;i--) 
    {
        cout<<ans[i];
	    if(i!=0) cout<<" ";
    }
	return 0;
}

注意: 最后的空格不要输出

以上是关于PAT乙级1002 写出这个数 (20 分)的主要内容,如果未能解决你的问题,请参考以下文章

PAT 乙级练习题1002. 写出这个数 (20)

PAT乙级_1002 写出这个数

PAT乙级1002. 写出这个数 (20)

1002. 写出这个数 (20)-PAT乙级真题

PAT乙级.1002.写出这个数

PAT乙级1002. 写出这个数