【练习】PAT 乙级 1002 写出这个数
程序员文章站
2022-07-15 13:50:24
...
思路
- 判断输入字符(n)的个数,计算每一个字符对应数字的和(count)
- 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甲级练习题1001、1002
下一篇: PAT甲级练习题1001、1002