View Code of Problem 16

#include "stdio.h"
#include "string.h"
void main()
{
	int i,j;
	int change(char s[]);
	int t;
	int flag;
	int x,y;
	char a[100];
	int p;
	int g[100];
	scanf("%d",&t);
	for(x=0;x<t;x++)
	{	
		scanf("%d",&flag);
		fflush(stdin);	//***********************************清空前面回车符
		gets(a);
		p=change(a);
		//printf("%d\n",p);
		if(flag==0)
			printf("%d\n",p);
		else
		{
			for(i=0;p!=0;i++)
			{
				y=p%10;
				g[i]=y;
				p=p/10;
				//printf("%d ",g[i]);
			}
			for(j=i-1;j>=0;j--)
			{
				if(g[j]==1)
				{
					if(j-1==-1)
						printf("one");
					else
						printf("one ");
				}

				if(g[j]==2)
				{
					if(j-1==-1)
						printf("two");
					else
						printf("two ");
				}
				if(g[j]==3)
				{
					if(j-1==-1)
						printf("three");
					else
						printf("three ");
				}
				if(g[j]==4)
				{
					if(j-1==-1)
						printf("four");
					else
						printf("four ");
				}
				if(g[j]==5)
				{
					if(j-1==-1)
						printf("five");
					else
						printf("five ");
				}
				if(g[j]==6)
				{
					if(j-1==-1)
						printf("six");
					else
						printf("six ");
				}
				if(g[j]==7)
				{
					if(j-1==-1)
						printf("seven");
					else
						printf("seven ");
				}
				if(g[j]==8)
				{
					if(j-1==-1)
						printf("eight");
					else
						printf("eight ");
				}
				if(g[j]==9)
				{
					if(j-1==-1)
						printf("nine");
					else
						printf("nine ");
				}
				if(g[j]==0)
				{
					if(j-1==-1)
						printf("zero");
					else
						printf("zero ");
				}
			}
			printf("\n");
		}
	}
}

int change(char s[])
{
	int shi;
	int d;
	int i,j;
	int k[100]={0};
	int sum1=0,sum2=0;
//puts(s);
	for(j=0,i=0;s[i]!='+'&&s[i]!='\0';i++)			//one two three four,five six seven eight nine zero
	{
		if(s[i]=='1')
		{k[j]=1;	i++;}
		if(s[i]=='2')
		{k[j]=2;	i++;}
		if(s[i]=='3')
		{k[j]=3;	i++;}
		if(s[i]=='4')
		{k[j]=4;	i++;}
		if(s[i]=='5')
		{k[j]=5;	i++;}
		if(s[i]=='6')
		{k[j]=6;	i++;}
		if(s[i]=='7')
		{k[j]=7;	i++;}
		if(s[i]=='8')
		{k[j]=8;	i++;}
		if(s[i]=='9')
		{k[j]=9;	i++;}
		if(s[i]=='0')
		{k[j]=0;	i++;}

		if(s[i]=='o')		
		{k[j]=1;	i=i+3;}
		if(s[i]=='t'||s[i]=='2'||s[i]=='3')
		{
			if(s[i+1]=='w'||s[i]=='2')
			{k[j]=2;	i=i+3;}
			if(s[i+1]=='h'||s[i]=='3')
			{k[j]=3;	i=i+5;}
		}
		if(s[i]=='f'||s[i]=='4'||s[i]=='5')
		{
			if(s[i+1]=='o'||s[i]=='4')
			{k[j]=4;	i=i+4;}
			if(s[i+1]=='i'||s[i]=='5')
			{k[j]=5;	i=i+4;}
		}
		if(s[i]=='s'||s[i]=='6'||s[i]=='7')
		{
			if(s[i+1]=='i'||s[i]=='6')
			{k[j]=6;	i=i+3;}
			if(s[i+1]=='e'||s[i]=='7')
			{k[j]=7;	i=i+5;}
		}
		if(s[i]=='e'||s[i]=='8')
		{k[j]=8;	i=i+5;}
		if(s[i]=='n'||s[i]=='9')
		{k[j]=9;	i=i+4;}
		if(s[i]=='z'||s[i]=='0')
		{k[j]=0;	i=i+4;}
	//	printf("%d ",k[j]);	
		j++;
	}
	shi=1;
	for(d=j-1;d>=0;d--)
	{
		k[d]=k[d]*shi;
		sum1=sum1+k[d];
		shi=shi*10;
		//printf("%d ",k[d]);
	}
//	printf("%d",i);							//左
///////////////////////////////////////////////////////////////////////////////////////////
	for(j=0,i=i+1;s[i]!='='&&s[i]!='\0';i++)			//one two three four,five six seven eight nine zero
	{
		if(s[i]=='1')
		{k[j]=1;	i++;}
		if(s[i]=='2')
		{k[j]=2;	i++;}
		if(s[i]=='3')
		{k[j]=3;	i++;}
		if(s[i]=='4')
		{k[j]=4;	i++;}
		if(s[i]=='5')
		{k[j]=5;	i++;}
		if(s[i]=='6')
		{k[j]=6;	i++;}
		if(s[i]=='7')
		{k[j]=7;	i++;}
		if(s[i]=='8')
		{k[j]=8;	i++;}
		if(s[i]=='9')
		{k[j]=9;	i++;}
		if(s[i]=='0')
		{k[j]=0;	i++;}
		
		if(s[i]=='o'||s[i]=='1')
		{k[j]=1;	i=i+3;}
		if(s[i]=='t'||s[i]=='2'||s[i]=='3')
		{
			if(s[i+1]=='w'||s[i]=='2')
			{k[j]=2;	i=i+3;}
			if(s[i+1]=='h'||s[i]=='3')
			{k[j]=3;	i=i+5;}
		}
		if(s[i]=='f'||s[i]=='4'||s[i]=='5')
		{
			if(s[i+1]=='o'||s[i]=='4')
			{k[j]=4;	i=i+4;}
			if(s[i+1]=='i'||s[i]=='5')
			{k[j]=5;	i=i+4;}
		}
		if(s[i]=='s'||s[i]=='6'||s[i]=='7')
		{
			if(s[i+1]=='i'||s[i]=='6')
			{k[j]=6;	i=i+3;}
			if(s[i+1]=='e'||s[i]=='7')
			{k[j]=7;	i=i+5;}
		}
		if(s[i]=='e'||s[i]=='8')
		{k[j]=8;	i=i+5;}
		if(s[i]=='n'||s[i]=='9')
		{k[j]=9;	i=i+4;}
		if(s[i]=='z'||s[i]=='0')
		{k[j]=0;	i=i+4;}
	//	printf("%d ",k[j]);	
		j++;
	}
	shi=1;
	for(d=j-1;d>0;d--)
	{
		k[d]=k[d]*shi;
		sum2=sum2+k[d];
		shi=shi*10;
		//printf("%d ",k[d]);
	}
	//printf(" %d ",sum2);	
//	printf("%d %d",sum1,sum2);
	return sum1+sum2;
}

Double click to view unformatted code.


Back to problem 16