浙大PAT-1002

1002. 写出这个数 (20)

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

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

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

输入样例:
1234567890987654321123456789

输出样例:
yi san wu

尼玛,提交告诉我格式错误,原来题目要求最后不加空格。
#include <stdio.h>

#include <string.h>

#include <malloc.h>



#define MAX_NUM 100



void print_decimal(char num)

{

    switch(num)

    {

        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;

        default:

            printf("fault");

            break;

    }

}



int main(int argc,char **argv)

{

    char nInput[MAX_NUM];

    int  nWidth = 0;

    int i = 0;

    int sum = 0;

    char strSum[MAX_NUM];

    

    gets(nInput);

    while(nInput[i] != '\0')

    {

        sum += (nInput[i++] - '0');

    }

    sprintf(strSum,"%d",sum);

    

    while(sum>0)

    {

        sum = sum/10;

        nWidth++;

    }

    

    for(i=0;i<nWidth-1;i++)

    {

        print_decimal(strSum[i]);

        printf(" ");

    }

    print_decimal(strSum[i]);

    return 0;

}

 

你可能感兴趣的:(pat)