• 题意
给出一个100位以内的数,计算出它每一位上的数之和,再按照从左到右的顺序,用英文字母表示出每一位
例如I/O:12345,计算各位数和为15(1+2+3+4+5),用英文表示为one five。
• I/O
Input
12345
Output
one five
• 算法
没有算法,输入/输出题
核心在于用数组表示十进制数据,O(n)。
• 代码
#include<cstdio>
#include<cstring>
char spell[10][7] = {{"zero"},{"one"}, {"two"}, {"three"}, {"four"}, {"five"}, {"six"}, {"seven"}, {"eight"}, {"nine"}};
char num[105];
void convert(void)
{ int sum = 0;
int len = strlen(num);
for(int i = 0; i<strlen(num); i++)
sum+=num[i]-'0';
int dig[105];
int k = 0;
if(sum == 0)
{ dig[0] = 0;
k = 1;
}
else
{
while(sum>0)
{ dig[k] = sum%10;
sum/=10;
k++;
}
}
for(int i = k-1; i>=0; i--)
{ printf("%s", spell[dig[i]]);
if(i>0) printf(" ");
}
}
int main()
{
memset(num, 0, sizeof(num));
scanf("%s", num);
convert();
return 0;
}