输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出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
我的代码:
#include <stdio.h>
int main()
{
int a,i;
int x;
scanf("%d",&x);
//多余的零
// if(x==0){
// printf("ling");
// }
if(x<0){
x=-x;
printf("fu ");
}
int b=1;
i=x;
while(i>10){
i=i/10;
b*=10;
// printf("i=%d,b=%d\n",i,b);
}
// printf("i=%d,b=%d",i,b);
// printf("x=%d\n",x);
// printf("b=%d\n",b);
// a=x/b;
// printf("a=%d\n",a);
while(1){
a=x/b;
x=x%b;
b/=10;
// printf("x=%d\n",x);
// printf("b=%d\n",b);
// printf("a=%d\n",a);
switch(a){
case 0:printf("ling");break;//这里有0上面就不用单独判断0了
case 1:printf("yi");break;//这里的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(" ");
}else{
break;
}
}
return 0;
}
我觉得难在判断输入的数是几位数:
int b=1;
i=x;
while(i>10){
i=i/10;//!!!不是i=i/b;因为b大小会变化
b*=10;//b大小变了
}