输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出 fu 字。十个数字对应的拼音如下:
1
0: ling
2
1: yi
3
2: er
4
3: san
5
4: si
6
5: wu
7
6: liu
8
7: qi
9
8: ba
10
9: jiu
输入格式
输入在一行中给出一个整数,如:12341234。
提示:整数包括负数、零和正数。
输出格式
在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如"yi er san si"。
输出时每行末尾的多余空格,不影响答案正确性
样例输入
-600
样例输出
fu liu ling ling
思路分析:重要的是把每一位的数字提取出来,在这里用k来表示每一位的权重,用数据/k就能得到最高位的数字,加一个循环,每次数据最高位拼音输出之后就可以将数据最高位去掉(这里用取模实现,详见代码)
话不多说, 直接上代码:
#include<stdio.h>
int main()
{
int n,i,k=1,copy;
scanf("%d",&n);
if(n<0) //实现负数输出
{
n=-n;
printf("fu ");
}
copy=n;
while(copy>9)
{
k*=10; //用k 表示数据位数
copy/=10;
}
for(;k>0;k=k/10) //利用k从最高位开始依次处理
{
i=n/k; //i表示对应位数上的数字
switch (i)
{
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;
default:printf("jiu ");
}
n=n%k; //输出i对应拼音之后把n现在的最高位去掉
}
}
版权声明:本文为weixin_45592404原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。