1002. 写出这个数 (20)——stack
来源:互联网 发布:武林外传 知乎精华 编辑:程序博客网 时间:2024/06/07 17:16
1、题目描述
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:1234567890987654321123456789输出样例:
yi san wu
2、思路分析
此处输入n可能是一个超大整数,需要借助字符串对其进行存储和计算处理。用字符串n[101]读取输入,并计算各位总和ans,由于ans不会很大,可以用一个int变量表示,此后对ans循环取余及除以10,并将所得余数序列存入堆栈,直到商为0停止。依次出栈,读取并显示,显示时用到了一个refer[10][5]的char二维印射数组。
3、C++代码
#include<iostream>#include<algorithm>#include<string.h>#include<stdio.h>#include<vector>#include<string>#include<stack>#include<queue>#include<math.h>#include<map>using namespace std;int Ans;char N[101];char Refer[10][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};void Input(){scanf("%s",N);}void Process(){Ans=0;for(int i=0;N[i]!='\0';i++)Ans+=N[i]-'0';}void Display(){if(Ans==0)printf("ling\n");else{stack<int> S;while(Ans>0){S.push(Ans%10);Ans/=10;}printf("%s",Refer[S.top()]);S.pop();while(!S.empty()){printf(" %s",Refer[S.top()]);S.pop();}printf("\n");}}int main(){//while(true){Input();Process();Display();//}return 0;}
0 0
- 1002. 写出这个数 (20)——stack
- 1002. 写出这个数 (20)——做题纪录
- 1002. 写出这个数 (20)——PAT乙级
- PAT 1002. 写出这个数 (20) —— Java
- 1002. 写出这个数 (20)——C语言
- PAT乙级—1002. 写出这个数 (20)-native
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- oracle sql 杂(待整理)
- 在表单中动态生成n多的商品属性,然后一起提交,想在商品对象中定义一个属性数组来接收属性,怎么办?
- 神经网络入门
- strncat的实现
- 和云计算、虚拟化相关的几个概念的粗浅理解
- 1002. 写出这个数 (20)——stack
- 少走弯路的十条忠告
- Android Socket编程的基类编写
- javascript定义类的三种方法
- 二叉搜索树(递归和非递归分别实现)
- CentOS 7拨号上网(ADSL & PPPoE)
- C# 简单的 get set
- 求最大最小及平均值
- 打印实心菱形