欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-15 13:50:24
...

思路

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

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

代码

#include <iostream>
#include <cstring>
#include <stack>
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练习 算法