1002 写出这个数

在这里插入图片描述开始时想用C语言写 后来觉得switch好长一溜(而且写完还一堆bug
后面看带佬代码用二维数组才发觉用switch好傻
写了个cpp版的
思路:
首先需要一个容器把需要输出的拼音装进去
由于不知道测试输入的具体个数,需要有一个操作终止输入
输入的是字符型数据,需要减去0对应的ASC码才是想要的数字
if判断开始觉得没有必要,for中的条件判断就能够满足,但是等执行完第一个for循环之后sum的值都会变成个位数
string的输出有些问题 在用printf输出会变成乱码 改成了cout
尝试在拼音后加空格 最后再输出退格也出现了问题 原因不明 改成了直接输出空格的形式

#include<iostream>
using namespace std;
#include<string>

int main(){
    int sum=0, i, j=0; 
    char ch;
    int m_reverse[4]={0};
    string ping[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
    while((ch=getchar())!='\n'){
        sum+=(ch-'0');
    }
    if(sum>=10){
        for(i=0; sum>=10; i++,j++){
            m_reverse[i]=sum%10;
            sum/=10;
        }
        if(sum!=0){
            cout<<ping[sum]<<" ";
        }

        for(i=j-1; i>=0; i--){
            cout<<ping[m_reverse[i]];
            if(i!=0){
                cout<<" ";
            }
        }
        cout<<"\n";
    } else {
        cout<<ping[sum]<<"\n";
    } 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值