#include<stdio.h>
#include <string.h>
#include <stack>
using namespace std;
void num_to_string(int n){
switch(n){
case 0:printf("ling");break;
case 1:printf("yi");break;
case 2:printf("er");break;
case 3:printf("san");break;
case 4:printf("si");break;
case 5:printf("wu");break;
case 6:printf("liu");break;
case 7:printf("qi");break;
case 8:printf("ba");break;
case 9:printf("jiu");break;
}
}
int main(){
char n[100]= {0};
int sum=0,i=0,len=0;
gets(n);
len = strlen(n);
for(i=0;i<len;i++){
sum+=n[i]-'0';
}
int num=0,count=0;
stack<int> st;
while(sum>9){
num=sum%10;
st.push(num);
sum/=10;
count++;
}
num_to_string(sum);
for(i=0;i<count;i++){
printf(" ");
num_to_string(st.top());
st.pop();
}
return 0;
}
总结:
1、如何获得一段数字的长度:
char n[100]= {0};
gets(n);
len = strlen(n);
for(i=0;i<len;i++){
sum+=n[i]-'0';**//注意如何得到数组每一个元素,需要-'0'**
}
2、用栈 先进先出特点实现数字的存放和打印。
3、空格的打印也是难点之一。
4、由于C编译器比较严格,本答案只能C++编译器通过编译。