关键是知道如何把输入的数字一个个存入数组里面,一个数组元素代表一个数字,读取方法有好多种
1、C里面的,用的是scanf(“%s”,inStr)
2、当成一个字符串, String s; cin >> s ; 取长度,直接 s[i]就是一个个数字
3、当成字符数组 char s
4、栈的使用,stack 可以做为倒序输入某数字的数据结构
#include<iostream> #include<string> #include<stack> using namespace std; #define Max 1000 string s; int num[Max]; string alphabet[10] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; stack<string> result; int main() { cin>>s; char c[1000]; int i = s.length(),j; int sum = 0; //将每一位数字取到一个数组中的对应元素里面 for(j = 0;j < i;j++) { num[j] = s[j]-'0';//计算机以ascii码值的形式存放,直接转换成整型的了? //c[j] = s[j]-'0';//做测试 //cout << int(c[j])<<endl; //竟然是可行的,得到整数值 } //求得和 for(j = 0;j < i;j++) sum += num[j]; while(sum) { int temp; temp = sum % 10; result.push(alphabet[temp]); sum /= 10; //if(sum == 0) // cout<<alphabet[temp]; //else // cout << alphabet[temp]<<" ";//这里没有考虑到逆序的问题 } //cout << sum; //逆序输出 while(!result.empty()) { cout<<result.top(); result.pop(); if(!result.empty()) cout<<" "; } return 0; } 栈的操作, stack.top() 是输出栈顶元素,stack.pop()将栈顶元素弹出,但是不返回值。
5、计算机存储的ascii码值,要取得其整数值,要减去‘0’。这个还要深究!!