今天敲代码了吗?   

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

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

输入格式:

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

输出格式:

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

输入样例:

1234567890987654321123456789
 

输出样例:

yi san wu



题意转化: 1. 使用数组存储每个数字的汉语拼音
      2. 取各个位求和
      3. 输出



代码:
#include<iostream>
#include<string.h>

using namespace std;

void Print(int n){  //输出
    const char *num[]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
    if(n/10!=0){  //非首位
        Print(n/10);
        cout<<" "<<num[n%10];
    }
    else{   //首位数字
        cout<<num[n%10];
    }
}

int main(){
    char str[101];
    cin>>str;
    int i,sum = 0;
    for(i=0;i<(int)strlen(str);i++){
        if(str[i]>='0'&&str[i]<='9'){
            sum+=str[i]-'0';
        }else{
            break;
        }
    }
    if(i==(int)strlen(str)){
        Print(sum);
    }
    else{
        return 0;
    }
    return 0;

}

 




posted on 2020-02-14 18:37  今天学算法了吗?  阅读(127)  评论(0编辑  收藏  举报

导航