test 4.2 念整数(5分)

你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。

题目内容

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

输入格式

一个整数,范围是[-100000,100000]。

输出格式

表示这个整数的每一位数字的汉语拼音,每一位数字的拼音之间以空格分隔,末尾没有空格。

输入样例

-30

输出样例

fu san ling

限制

时间限制:500ms 内存限制:32000kb

代码实现

C语言

#include<stdio.h>

int main() {
    int n;
    scanf("%d", &n);

    if (n < 0) {
        printf("fu ");
        n = -n;
    } 

    //输出10^n    
    int mark = 1;
    int t = n;
    while (t > 9){
        t /= 10;
        mark *= 10;
    }
    //从左往右分解数字 
    int digit;
    while (mark > 0) {  
        digit = n / mark;
        n %= mark;
        mark /= 10;     
        //输出数字相对应的拼音 
        switch (digit) {
        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;                  
        }       
        //当数字不是最后一位时,输出空格 
        if (mark > 0) {
            printf(" ");
        }       
    }

    return 0;
}