L1007. 念数字

输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出“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
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
翁恺
 
这道题需要注意的是每个数字对应的拼音之间个空格,否则系统将会认为格式错误。
 
解题思路:首先将数N的每个位数的数字都以个位数的形式分离出来,存入一个数组,然后倒着判断数组应该输出什么。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int n;
    int i = 0, j;
    int x, y;
    int ch[100];

    scanf("%d", &n);

    x = n;

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

 i = 0; 
    while(x != 0)
    {
        y = x%10;
        x = x/10;
        ch[i] = y;
        i++;
    }

    for(j = i-1; j >= 0 ; j--)
    {
        if(ch[j] == 0)
            printf("ling");
        else if(ch[j] == 1)
            printf("yi");
        else if(ch[j] == 2)
            printf("er");
        else if(ch[j] == 3)
            printf("san");
        else if(ch[j] == 4)
            printf("si");
        else if(ch[j] == 5)
            printf("wu");
        else if(ch[j] == 6)
            printf("liu");
        else if(ch[j] == 7)
            printf("qi");
        else if(ch[j] == 8)
            printf("ba");
        else if(ch[j] == 9)
            printf("jiu");

  if(j != 0)
   printf(" ");
    }
 printf("\n");
    return 0;
}

 
 
 
 
 

原文地址:https://www.cnblogs.com/beimengmuxi/p/6560143.html