9月20号(等)

7-25 念数字 (15 分)
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出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

因为入门时间不长,所以我的代码比较麻烦
如下

#include<stdio.h>
#define N 100
int main ()
{
	int t;
	int n=0;
	int i=0;
	int x=0;
	int j;
	int len=0;
	scanf("%d",&n);
	if(n<0)
	{  
        printf("fu ");  
        n=-n; 
    }   
	int a [100];
	while(n)
	{
		a[x]=n%10;
		x++;
		n/=10;
	}
	for(i=0,j=x-1;i<j;i++,j--){
		int tmp = a[i];
		a[i]=a[j];
		a[j]=tmp;
	}
	for(i=0;i<=x-2;i++)
	{
		if(a[i]==0)
			printf("ling ");
		else if(a[i]==1)
			printf("yi ");
		else if(a[i]==2)
			printf("er ") ;
		else if(a[i]==3)
			printf("san ");
		else if(a[i]==4)
			printf("si ");
		else if(a[i]==5)
			printf("wu ");
		else if(a[i]==6)
			printf("liu ");
		else if(a[i]==7)
			printf("qi ");
		else if(a[i]==8)
			printf("ba ");
		else if(a[i]==9)
			printf("jiu ");
	}
		i=x-1;
		if(a[i]==0)
			printf("ling");
		else if(a[i]==1)
			printf("yi");
		else if(a[i]==2)
			printf("er") ;
		else if(a[i]==3)
			printf("san");
		else if(a[i]==4)
			printf("si");
		else if(a[i]==5)
			printf("wu");
		else if(a[i]==6)
			printf("liu");
		else if(a[i]==7)
			printf("qi");
		else if(a[i]==8)
			printf("ba");
		else if(a[i]==9)
			printf("jiu");
	return 0;
} 

这里一开始我定义了数组为字符型的,当实际运行后发现,字符型的输出是空格,不会把数字存到数组里面,因为数字是整数型的,所以我把字符型的数组改成了整数型的数组,然后测试成功,这里的==和=容易混淆,需要及时区分
另外
我第一次提交答案是错误的,因为我没用第二个判断,我直接执行了for循环然后最后一位的答案后面多一个空格,后来修改成上面的代码;
当然学长看到我的代码说这个代码实在太麻烦了,不是一个好的代码,他的代码如下

#include<stdio.h>
#define N 100
char in[][5] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" };
int t,n ,i,x,j;
int main(){

	scanf("%d", &n);
	if (n == 0)printf("ling");
	if (n < 0)
		printf("fu ");
	n = abs(n);
	char a[100];
	for (; n; n /= 10)
		a[x++] = n % 10 + '0';
	for (i = x-1; i >= 0; i--)
		if (i==x-1) printf("%s", in[a[i] - '0']);
		else printf(" %s",in[a[i] - '0']);
	return 0;
}

他首先定义了一个字符型的二维数组并把这几个拼音输入到里面
如果===0输出ling
如果他小于0就输出fu
并用函数将n取正
定义了长度为100的数组
‘0’应该是空格的意思在这个数组里面
并且x是声明的全局变量
在全局变量中如果没有给出他的初始值那么他的初始值就是0
然后后面的这一串代码目前我还没有看懂
等待后期补充

猜你喜欢

转载自blog.csdn.net/yang8627/article/details/82808278