输出这个整数对应的拼音

输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出 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版权协议,转载请附上原文出处链接和本声明。