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 }

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

     
  • 相关阅读:
    自然语言处理1-1 算法时间复杂度
    tensorflow2.0(1):简介
    基于PKCS#11的应用架构
    数字证书应用改造需求调研-2015-10-19
    签名验证工具Aloaha Sign
    PDF签名应用研究小结
    用bcp导sql server数据到excel文件
    无线网卡和有线网卡的嗅探模式的区别
    Tomcat6源代码在Eclipse里调试简要说明
    OpenLDAP 主从复制配置
  • 原文地址:https://www.cnblogs.com/qujunhui/p/10389422.html
Copyright © 2011-2022 走看看