数据结构(十九)
学习数据结构与算法过程中的心得体会以及知识点的整理,方便我自己查找,也希望可以和大家一起交流。
—— 念数字 ——
1.题目描述
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:
0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu
1.1输入格式:
输入在一行中给出一个整数,如:1234。
提示:整数包括负数、零和正数。
1.2输出格式:
在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如
yi er san si
。
1.3样例输入与输出
输入样例:
-600
输出样例:
fu liu ling ling
2.代码实现
c
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int num,a;
scanf("%d",&num);
if(num<0)
{
printf("fu ");
num = -num;
}
if(num==0)
printf("ling");
int n;
for(a=0,n=num;n!=0;n/=10,a++);//计算一共有多少位(a)
int m[a];
n = num;
for(int l=0;l<a;l++,n/=10)
m[l]=n%10;
n=num;
for(int b=a-1;b>=0;b--,n/=10)
{
int a = n%10;
switch(m[b])
{
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(b!=0)
printf(" ");
}
return 0;
}
3.代码说明
由于代码后半部分用来计算的判定条件几乎都是限定不等于零或者大于零,因此,如果输入的数字是0,我们是不能监测到的,需要在一开始就单独说明输入为0的情况。