输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出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
思路:
- 分解整数(操作整数的位数比较安全),并不是倒序输出,而需要正序分解(倒序分解也可以,把结果储存到数组里头,然后倒序遍历数组)
- 构造字符串数组,让整数去匹配字符串数组
- 遍历输出
- 要仔细,比如 N < 0 的时候
#include<stdio.h>
#include<math.h>
int getdigits( int N ) ;
int main(void){
char *pinyin[10] ={"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu" } ;
int N ;
scanf("%d",&N) ;
int i = getdigits( N ) ;//整数的位数
int j ;//操作数组的下标
if( N < 0 ){
printf("fu ") ;
N = abs(N) ;
}
while( i > 0 ){
j = N / pow( 10 , i-1) ;//如果上一步没有取N的绝对值,当N<0时,到这里很有可能出错
printf("%s",pinyin[j]) ;
N = N % (int)pow( 10 , i-1 ) ;//pow默认返回的是double
if( i > 1){
printf(" ") ;
}
i-- ;
}
return 0 ;
}
int getdigits( int N ){
N = abs(N) ;
int i = 1;//用来数位数,默认为1
for( ; N > 9 ; i++){
N = N / 10 ;
}
return i ;
}