7-25 念数字

输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:

0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu

输入格式

输入在一行中给出一个整数,如:1234

提示:整数包括负数、零和正数。

输出格式

在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如 yi er san si

输入样例

-600

输出样例

fu liu ling ling

分析与答案

对于零,直接输出ling就可以,如果是负数,那就先输出fu,然后对输入取反,按照正数来操作。

念数字需要把数字的每一位拆分到数组中,和之前一些题目的操作不同的是,念数字要求从左到右,因此数字取出后,是从右到左遍历,也就是从最大一位一直遍历到个位。

#include <stdio.h>
void output_char(char array[][5],int num);
int main(){
    int num = 0, i = 10, count = 0;
    char array[10][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
    int divide[16] = {0};
    scanf("%d",&num);
    if(num == 0){
        //等于0特殊处理
        printf("ling");
        return 0;
    }
    if(num < 0){
        printf("fu ");
        num = -num;
    }
    while(num!=0){
        divide[count]=num % 10;
        num = (num - divide[count])/10;
        count++;
    }
    count--;
    for(;count>=0;count--){
        output_char(array,divide[count]);
        if(count!=0)
            printf(" ");
    }
    return 0;
}
void output_char(char array[][5],int num){
    for(int i = 0;array[num][i]!='\0';i++)
        printf("%c",array[num][i]);
}

7-25 测试点