输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出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
问题分析:
首先定义数组存储0-9的拼音
即字符型数组存储10个拼音
char *pinyin[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
char *A[]={“H”,“e”,“l”,“l”,“o”}表示的是char指针数组,而char A[]={‘H’,‘e’,‘l;,’l‘,’o‘}表示的是char数组
注意单引号‘’表示单个字符,双引号““表示字符串,当元素为字符串时,只能为char *A[] 更多详解查看此链接:
输出的内容分情况讨论:
当n为0的时候,printf ("ling");
当n不等于0的时候,应该思考在怎么把每一位的数字的出来呢?
此时我们想到了取余,即当n不为0的时候,且不是负数
例如1234
1234%10=4;
1234/10=123;
123%10=3;
123/10=12;
12%10=2;
12/10=1;
将n%10的结果存储在一个数组里面,数组定义为整型
int num[i];
所以依此类推:
while(n!=0){
if(n>0){
num[i]=n%10;
i++;
n/10=n;
} else{
printf("fu");
num[i]=-n%10;
i++;
-n/10=-n;
}
}
1234得到的应为一 二 三 四
此时的得到的存储的数字num[0]=4 num[1]=3 num[2]=2 num[3]=1
所以应倒序输出
while(i>0){
i--;
if(i==0){
printf("%s\n",pinyin[num[i]]);
}else{
printf("%s ",pinyin[num[i]]);
}
}
代码如下:
#include<stdio.h>
int main (){
char *pinyin[10]={"ling","yi","er","san","si", "wu","liu","qi","ba","jiu"};
int n;//输入的整数
int num[10];//将数字存储在整型数组里
int i=0;//初始化i为0
scanf("%d",&n);//输入整数
if (n==0){
printf("ling");
}
while(n!=0){
if(n>0){
num[i]=n%10;
n=n/10;
i++;
}else{
printf("fu ");
num[i]=-n%10;
n=-n/10;
i++;
}
}
//倒序输出数字i从大到小
while(i>0){
i--;
if(i==0){
printf("%s\n",pinyin[num[i]]);
}else{
printf("%s ",pinyin[num[i]]);
}
}
return 0;
}