很简单的A+B
但是发现用C++也太方便了 还是贴一下人家的代码,学学思维。
用string 要用 #include<string> 不是#include<cstring>
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
string str[]={"zero","one","two","three","four","five","six","seven","eight","nine"};
int input()
{
string a;
int s1=0;
while(cin>>a)//cin输入时会以空格结束。所以根据此题输入示例就可以用“+,=”结束输入。
{
if(a=="+"||a=="=")
break;
for(int i=0;i<10;i++)
if(a==str[i])
{
s1=s1*10+i;
break;
}
}
return s1;
}
void output(int x)
{
char s[20];
sprintf(s,"%d",x);//sprintf(s,"%d",x)此处是把整数x放入字符串s中。
for(int i=0;s[i]!=0;i++)
cout<<str[s[i]-'0']<<" ";//s[i]-'0'是把字符型的数字改为整形。
cout<<endl;
}
int main()
{
int a,b;
while(1)
{
a=input();
b=input();
if(a==0&&b==0)
return 0;
output(a+b);
}
return 0;
}
但是我交了一下这份代码时间超限了
还是分享一下我的笨方法,但是最起码是提交了
#include <iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
char a1[10]="one",a2[10]="two",a3[10]="three",a4[10]="four",a5[10]="five";
char a6[10]="six",a7[10]="seven",a8[10]="eight",a9[10]="nine",a0[10]="zero",a10[10]="+";
int transForm(char b[10])
{
if(!strcmp(a1,b))
return 1;
else if(!strcmp(a2,b))
return 2;
else if(!strcmp(a3,b))
return 3;
else if(!strcmp(a4,b))
return 4;
else if(!strcmp(a5,b))
return 5;
else if(!strcmp(a6,b))
return 6;
else if(!strcmp(a7,b))
return 7;
else if(!strcmp(a8,b))
return 8;
else if(!strcmp(a9,b))
return 9;
else if(!strcmp(a10,b))
return -1;
else
return 0;
}
int main()
{
int i,j,n,k,sum=0,sum1=0;
int b,c,d;
char a[100];
while(~scanf("%s",a))//5+2
{
if(!strcmp(a,"="))
{
if(sum+sum1==0)
return 0;
printf("%d\n",sum1+sum);
// printf("%d\n",sum1+sum);
sum=0;
sum1=0;
continue;
}
b=transForm(a);
if(b>=0&&sum==0)
sum=b;
else if(b>=0&&sum!=0)
sum=sum*10+b;
if(b==-1)
{
sum1+=sum;
sum=0;
}
}
return 0;
}