PTA乙级1002.写出这个数

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

输入格式:

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

输出格式:

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

输入样例:

1234567890987654321123456789

输出样例:

yi san wu

一开始想到用int类型来存储n,但发现n的范围是10100,int的取值范围为+-2×10的9次方的,超过了int类型,long long也仅仅为9×10的18次方,也会溢出.所以要使用字符串处理.
这里不能用字符数组来一位一位地存储,否则占用的空间太大了,所以应该读一位存一位,用到getchar函数,结束条件为 输入=='\n'
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
    char ch;
    int sum=0;
    while((ch=getchar())!='\n'){
        sum=sum+ch-'0';
    }
    char str[50];
    sprintf(str,"%d",sum);
    switch(str[0]){
            case '1':cout<<"yi";
                     break;
            case '2':cout<<"er";
                     break;
            case '3':cout<<"san";
                     break;
            case '4':cout<<"si";
                     break;
            case '5':cout<<"wu";
                     break;
            case '6':cout<<"liu";
                     break;
            case '7':cout<<"qi";
                     break;
            case '8':cout<<"ba";
                     break;
            case '9':cout<<"jiu";
                     break;
            case '0':cout<<"ling";
                     break;
        }
    for(unsigned int i=1;i<strlen(str);i++){
        switch(str[i]){
            case '1':cout<<" yi";
                     break;
            case '2':cout<<" er";
                     break;
            case '3':cout<<" san";
                     break;
            case '4':cout<<" si";
                     break;
            case '5':cout<<" wu";
                     break;
            case '6':cout<<" liu";
                     break;
            case '7':cout<<" qi";
                     break;
            case '8':cout<<" ba";
                     break;
            case '9':cout<<" jiu";
                     break;
            case '0':cout<<" ling";
                     break;
        }
    }
}
 参考链接:https://blog.csdn.net/weifenglin1997/article/details/78702362,十分感谢
 

猜你喜欢

转载自www.cnblogs.com/CrossingX/p/10861631.html
今日推荐