首页 > 其他 > 详细

PTA乙级1002.写出这个数

时间:2019-05-14 13:23:45      阅读:148      评论:0      收藏:0      [点我收藏+]

读入一个正整数 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,十分感谢
 

PTA乙级1002.写出这个数

原文:https://www.cnblogs.com/CrossingX/p/10861631.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!