输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出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
思路:1、定义字符型数组储存10个拼音 2、定义并输入整数,逆序输出。记得先对0讨论输出"ling"
对于给定整数1234,要得到各个位置上的数,采用除以10取余,1234%10=4;123%10=3;12%10=2;1%10=1;此时存储到数组中的数字为4321,所对应的拼音为si san er yi,那么只需要倒序输出即可。至于负数情况,只需要在最开始添加一个负号,再对该数字进行处理即可。
法一代码:
#include <stdio.h>
int main()
{
int i=0,n,count=0; //利用计数法给定空格
char *pinyin[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
int store[10];
scanf("%d",&n);
if(n==0)
printf("ling");
while(n!=0){
if(n>0){
store[i]=n%10;
n/=10;
i++;
}
else{
store[i]=-n%10;
n=-n/10;
i++;
printf("fu ");
}
}
while(i>0){
i--;
if(count>0){
printf(" ");
}
printf("%s",pinyin[store[i]]);
count++;
}
return 0;
}
另一种方法是将读入整数视作读入字符串,对于字符串数组的每一个字符,进行分支循环判断输出,不用事先另外处理整数0和负数符号
法二代码:(简便)
#include <stdio.h>
#include <string.h>
int main()
{
//定义一个10行5列的二维数组。
char num[10][5]= {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
char a[1005];
scanf("%s",a);
if( a[0]=='-')
printf("fu");
else
printf("%s", num[a[0] - '0']); //以字符串的形式输出二维数组的一整行
for(int i=1;i<strlen(a);i++)
printf(" %s", num[a[i] - '0']);
printf("\n");
return 0;
}
简便方法参照于https://blog.csdn.net/weixin_43710740/article/details/84956547