输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出
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
。
参考代码
#include<stdio.h>
int main()
{
int n, i, j, k, num;
int a[10] = { 0 };
scanf("%d", &num);
n = num;
if (num < 0) {
n = -1 * n;
}
for (i = 0; n > 0; i++) {
a[i] = n % 10;
n = n / 10;
}
if (num < 0) {
printf("fu ");
}
for (j = i-1; j >= 1; 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;
}
}
switch (a[0]) {
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;
}
return 0;
}
我想我的代码是所有博客里面写的最差的吧,最后一个空格实在不知道怎么消掉,看了别人的代码,加上一个判断条件进行输出空格,但我懒的加了,直接复制switch语句,在下面再来一遍switch循环。内存消耗的很厉害,时间效率也很差。
下面是我找的大佬的代码给大家参考参考
#include<stdio.h>
#include<string.h>
int main()
{
char str[100];
int i = 0;
scanf("%s", str);
// printf("%c",str[3]);
for (int j = 0; j < strlen(str); j++) {
switch (str[j]) {
case '-': {
printf("fu");
break;
}
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 != strlen(str) - 1)
printf(" ");
}
return 0;
}
他的时间效率和存储效率都比我的要好,而且很高明的是,不像我们大家都是用整型数据接收,它是直接利用字符串数组的形式进行接收,对负号都不用进行判断。
版权声明:本文为m0_61146840原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。