PAT-B] 1002. 写出这个数 [字符串处理]

链接:1002. 写出这个数(20)

题意

输入一个整数 n 。
计算 n 的每一位的相加的和 sum
以拼音的方式顺位输出

分析

首先,这个 n 范围很大.. 小于 10100
也就是说这个 n 最大可以取到 101001
所以先定位到字符串处理问题。(虽然可以不用字符串,用轻松的方法来写。详见代码)

如果用字符来存储某一位数字的话,在计算 sum 的时候就要注意 - ‘0’。不减的话可以要犯大错误的。

算完 sum 之后 输出每一位数字的拼音的时候。要注意两点 :

  1. 拼音要高位先输出,之间有空格最后没空格
  2. 拼音要学好 (・-・*)

代码

#include <cstdio>
#include <stack>
using namespace std;

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

int main()
{
    char n;
    int sum = 0;
    while( ~scanf( "%c", &n ) && n != '\n' ){
        sum += n - '0';
    }
    stack< int > stk;
    while( sum ){
        stk.push( sum % 10 );
        sum /= 10;
    }
    printf( "%s", py[ stk.top() ] );
    stk.pop();
    while( stk.size() ){
        printf( " %s", py[ stk.top() ] );
        stk.pop();
    }
    puts( "" );
    return 0;
}

小结

用上stack写起来比较简单..

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值