1002. 写出这个数 (20)——stack
2016-10-21 23:20
239 查看
1、题目描述
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有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; }
相关文章推荐
- 浙江大学PAT乙级试题.1002. 写出这个数 (20)C语言
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)——C语言
- 1002. 写出这个数 (20)
- pat 1002. 写出这个数 (20)
- PAT 1002 写出这个数 (20) (Basic Level)
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)——PAT乙级
- PAT乙级1002写出这个数 (20)
- 编程题目:PAT 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- PAT 1002. 写出这个数 (20)
- PAT-乙级-1002. 写出这个数 (20)
- 1002. 写出这个数 (20)(C)
- PAT-B 1002 写出这个数 (20)
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)