【练习】PAT 乙级 1002 写出这个数

思路

  1. 判断输入字符(n)的个数,计算每一个字符对应数字的和(count)
  2. print_out 中:count 由末位开始输出,这里借助栈(st)将输出顺序逆置并输出

例如 输入 123456789
count = 45;
不借助栈,输出 5 4 ;
借助栈,则输出 4 5

代码

#include 
#include 
#include 
void judge_num(int a){
     
    switch(a){
     
        case 0: {
     
            std::cout << "ling";
            break;
        }
        case 1:{
     
            std::cout << "yi";
            break;
        }
        case 2:{
     
            std::cout << "er";
            break;
        }
        case 3:{
     
            std::cout << "san";
            break;
        }
        case 4:{
     
            std::cout << "si";
            break;
        }
        case 5: {
     
            std::cout << "wu";
            break;
        }
        case 6:{
     
            std::cout << "liu";
            break;
        }
        case 7:{
     
            std::cout << "qi";
            break;
        }
        case 8:{
     
            std::cout << "ba";
            break;
        }
        case 9:{
     
            std::cout << "jiu";;
            break;
        }
    }
}
void print_out(int count){
     
    std::stack<int> st;
    while(count != 0){
     
        int a = count % 10;
//        judge_num(a);
//        std::cout << ' ';   //space
        st.push(a);
        count = count / 10;
    }
    while (!st.empty()){
     
        int b = st.top();   //访问栈顶元素
        judge_num(b);
        st.pop();   //栈顶出栈
        if (!st.empty())
            std::cout << ' ';   //space
    }
}
int main() {
     
    char n[10^100];
//    gets(n);      //混用导致编译错误
    std::cin >> n;
    int i = strlen(n);
    int count = 0;
    while (i != 0){
     
        --i;
        count = count + n[i] - '0';    //count为各位数字之和
    }
    print_out(count);
    return 0;
}

你可能感兴趣的:(PAT练习,算法)