PAT A 1005

来源:互联网 发布:日式风格女装 淘宝 编辑:程序博客网 时间:2024/06/05 22:45

• 题意

给出一个100位以内的数,计算出它每一位上的数之和,再按照从左到右的顺序,用英文字母表示出每一位例如I/O:12345,计算各位数和为15(1+2+3+4+5),用英文表示为one five。

• I/O

Input12345Outputone 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;}
0 0
原创粉丝点击