1002 写出这个数

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;
}
上一篇:hbase命令整理


下一篇:PAT 甲级 1002 A+B for Polynomials