题目:
方法一:这里是将数据处理为int型,所以只适用于小数。
#include<stdio.h>
int main()
{
char a[100][100]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
int n,b[100],i=0;
scanf("%d",&n);
if(n<0)
{
printf("fu ");
n=-n;
}
while(n)
{
b[i++]=n%10;
n/=10;
}
printf("%s",a[b[i-1]]);//这里是为了如果是负数的时候输出负号
for(int j=i-2;j>=0;j--)
{
printf(" %s",a[b[j]]);//把数组b当作a的下标
}
printf("\n");
return 0;
}
方法二:直接将数据处理成字符串,这么即适用于大数的情况,而且代码简单,清楚易懂。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s[] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" };
string a;
int i = 0;
cin >> a;
int len = a.length();
if (a[0] == '-') {
cout << "fu" << ' ';
i++;
}
for (i; i < len; i++)
{
cout << s[a[i]-'0'];//作为s的下标
if (i != len - 1)cout << ' ';//输出格式处理
}
return 0;
}