PAT:1002. 写出这个数 (20)

来源:互联网 发布:如何查手机mac地址 编辑:程序博客网 时间:2024/06/05 16:36

读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。

输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:
1234567890987654321123456789
输出样例:
yi san wu
代码:

#include<stdio.h>#include<string.h>#include<math.h>//下面的函数用了个小递归shuchu(int l){    if (l / 10)    {        shuchu(l / 10);        printf(" ");    }    switch (l = l%10)    {    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;    default:printf("ling");    }}int main(){    char a[101];    gets(a);    int i = strlen(a);//i表示数字位数    int j = 0, t, l;//j表示数字和    for (t = 0; t < i; t++)    {        j += (a[t] - '0');    }    l = j;//l与j相同    t = 0;//t是位数    do {        t++;        j /= 10;    } while (j > 0);    shuchu(l);    return 0;}

本来此题可以更简单,不需要用递归就能解决问题,但似乎那个网站不能用“\b”这个符号,所以我只能想到用递归解决问题。

                                                                   2017年7月4日18:15:05                                                                       写于濮阳
原创粉丝点击