#include<iostream> #include<stack> #include<string.h> char *g_WordTable[10]= {"zero", "one", "two", "three", "four", "five","six", "seven", "eight", "nine"};
int main() { //存放用户输入的数据 char input[1000]; //当用户输入的数据没有停止的时候 while(scanf("%s", &input) != EOF) { int sum = 0; //得到用户输入数据的长度,用到了string.h int len = strlen(input); //把每个字符转化为ASCII码,数字字符的ASCII码和数字本身是相等的,求和 for(int i = 0; i < len; ++i) sum += (input[i]-‘0‘); //定义一个栈 std::stack<int> s; //拆位,个位先放入栈,然后是十百千位 do { int temp = sum%10; s.push(temp); sum /= 10; }while(sum != 0); //输出,empty判断堆栈是否为空 while(!s.empty()) { //得到堆栈栈顶数据 int t = s.top(); //size返回当前堆栈长度(即内部数据个数) //如果栈的大小事大于1的 if((int)s.size() > 1) printf("%s ", g_WordTable[t]); else printf("%s\n", g_WordTable[t]); //pop弹出栈顶的元素 s.pop(); } } return 0; }
总结:1.掌握指针数组定义字符串和二维数组定义字符串,指针数组更优
2.掌握拆项的方法
3.掌握栈的方法
PAT---1005. Spell It Right (20),布布扣,bubuko.com
PAT---1005. Spell It Right (20)
原文:http://www.cnblogs.com/michaeljunlove/p/3886769.html