(PAT乙)1002. 写出这个数

来源:互联网 发布:属于网络教育的特征是 编辑:程序博客网 时间:2024/05/21 09:41

1002. 写出这个数

读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){    char n[101];    scanf("%s", n);    char temp[2];    int i, sum=0;    for(i=0;i<strlen(n);i++){        temp[0]=n[i];        sum += atoi(temp);    }    char result[100] = {'\0'};    char output[100] = {'\0'};    sprintf(result, "%d", sum);    int size = strlen(result);    for(i=0;i<size;i++){        switch(result[i]){            case '1':                strcat(output, (i==(size-1))?"yi": "yi ");                break;            case '2':                strcat(output, (i==(size-1))?"er": "er ");                break;            case '3':                strcat(output, (i==(size-1))?"san": "san ");                break;            case '4':                strcat(output, (i==(size-1))?"si": "si ");                break;            case '5':                strcat(output, (i==(size-1))?"wu": "wu ");                break;            case '6':                strcat(output, (i==(size-1))?"liu": "liu ");                break;            case '7':                strcat(output, (i==(size-1))?"qi": "qi ");                break;            case '8':                strcat(output, (i==(size-1))?"ba": "ba ");                break;            case '9':                strcat(output, (i==(size-1))?"jiu": "jiu ");                break;            case '0':                strcat(output, (i==(size-1))?"ling": "ling ");                break;         }    }    printf("%s", output);}