念数字
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出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
思路分析:
问题:
- 如何存入数字;
- 如何找到对应的读音;
- 空格的输出形式
解决:
- 利用一个一维数组,不断取%,得到数值逆序数组;
- 利用switch方法,逆序遍历数组,找到对应读音
- 设置j,j=i-1;当j减到0时就不用输出空格,其余都输出空格;
实现代码:
int main(){
int numS,num;
int a[10]={0};
int i =0;
int j;
scanf("%d",&numS);
if(numS == 0)
printf("ling");
if(numS < 0) //小于零输出fu
printf("fu ");
num = fabs(numS); //取绝对值
while(num){ // 数组存入输入的数字的绝对值
a[i] = num%10;
num /= 10;
i++;
}
for(j = i-1; j >= 0;j--){ //按照输入的数字逆序找到对应的读音
switch(a[j]){
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(j != 0) //j=0刚好等于最后一个,不用输出空格
printf(" ");
}
}