关键是知道如何把输入的数字一个个存入数组里面,一个数组元素代表一个数字,读取方法有好多种
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’。这个还要深究!!