输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出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 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_61146840/article/details/125523543