浙大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;
}

 

posted @ 2013-12-10 22:02  fangying  阅读(366)  评论(0编辑  收藏  举报