Press "Enter" to skip to content

用汉语拼音输出整数

你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。
如输入1234,则输出: yi er san si
注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格。当遇到负数时,在输出的开头加上“fu”,如-2341输出为: fu er san si yi

输入格式:一个整数,范围是[-100000,100000]。
输出格式:表示这个整数的每一位数字的汉语拼音,每一位数字的拼音之间以空格分隔,末尾没有空格。
输入样例:-30
输出样例:fu san ling
时间限制:500ms内存限制:32000kb

#include <stdio.h>
int main(){
    int x,t;
    scanf("%d",&x);
    int mask = 1;
//判断输入数是否为负数,如果为负数,则输出负号,然后把负数转化为正整数。
    if(x<0){
        printf("fu ");
        x = -x;
    }
//判断输入的正整数有多少位,然后输出后面与x相余的对应位数
    t = x;  
    while( t > 9){
        t /= 10;
        mask *= 10;
    }
//不断的相于,然后输出到switch()
    do {
        int d = x / mask;
//      printf("%d",d);
        switch(d){
            case 0:
                printf("ling");
                break;
            case 1:
                printf("yi");
                break;
            case 2:
                printf("er");
                break;
            case 3:
                printf("san");
                break;
            case 4:
                printf("si");
            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;
            }
        if( mask > 9){
            printf(" ");
            }
            x %= mask;
            mask /= 10 ;
        } while(mask >0);
    return 0;
}