zoukankan      html  css  js  c++  java
  • PAT1002 写出这个数 (C++实现)

    PAT乙级考试题目 1002 写出这个数 (20 分)

    题目要求:

    读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

    输入格式:

    每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100​​。

    输出格式:

    在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。

    输入样例:

    1234567890987654321123456789
    

    输出样例:

    yi san wu

    我的答案(C++实现):

    本程序采用“栈”的方法来实现。

    1.用getchar()函数收集数字并累加到sum变量;

    2.将sum的各位数字推入栈中(从末位开始,逆序进行);

    3.将栈顶为0的元素推出栈(sum中“多余”的0);

    4.从栈顶元素开始,依次用中文拼音拼写(注意读第一个元素前无“空格”);

     1 #include "pch.h"
     2 #include <iostream>
     3 #include <stack>
     4 using namespace std;
     5 
     6 int main()
     7 {
     8     char pin[10][10] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" };
     9     int n,sum=0;
    10     stack<int>s;
    11     //累加各位数字
    12     while ((n = getchar())!= '
    ')
    13     {
    14         sum+=n-'0';
    15     }
    16     //分解数
    17     for (int i = 0; i < 3; i++) {
    18         s.push(sum % 10);
    19         sum /= 10;
    20     }
    21     while(s.top() == 0) {
    22         s.pop();
    23     }
    24     //读数程序
    25     cout <<  pin[s.top()];
    26     s.pop();
    27     while (!s.empty()) {
    28         cout <<" "<< pin[s.top()];
    29         s.pop();
    30     }
    31     return 0;
    32 }

    有什么问题欢迎留言交流~

     
  • 相关阅读:
    ccBPM典型的树形表单和多表头表单的流程示例
    Arrays -数组工具类,数组转化字符串,数组排序等
    String
    ArrayList
    Random
    Scanner
    Phone-java标准类
    HelloWorld-java
    c++ 由无向图构造邻接表,实现深度优先遍历、广度优先遍历。
    c++实现哈夫曼树,哈夫曼编码,哈夫曼解码(字符串去重,并统计频率)
  • 原文地址:https://www.cnblogs.com/qujunhui/p/10389422.html
Copyright © 2011-2022 走看看