版权声明:转载请说明出处 https://blog.csdn.net/qq_34448101/article/details/87902568
题目描述
读入两个小于100的正整数A和B,计算A+B,注意: A+B的每一位由对应的英文字母给出。
输入
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为zero时输入结束,相应的结果不要输出.
输出
对每个测试用例输出1行,即A+B的值.
样例输入
one + two =
three four + five six =
zero + zero =
样例输出
3
90
第一种菜鸟愚蠢方法:
#include<iostream>
#include<string.h>
//#include<string>
using namespace std;
int change(char str[100])
{
int a=0,b=0,i,j=0,flag=0;
char st[100]=" ",s[100]=" ";
for(i=0;str[i]!='\0';i++)
{
if(str[i]!=' ')
{
st[j]=str[i];
j++;
}
if(str[i]==' '||str[i+1]=='\0')
{
if(strcmp(st,"zero")==0)
a=0;
if(strcmp(st,"one")==0)
a=1;
if(strcmp(st,"two")==0)
a=2;
if(strcmp(st,"three")==0)
a=3;
if(strcmp(st,"four")==0)
a=4;
if(strcmp(st,"five")==0)
a=5;
if(strcmp(st,"six")==0)
a=6;
if(strcmp(st,"seven")==0)
a=7;
if(strcmp(st,"eight")==0)
a=8;
if(strcmp(st,"nine")==0)
a=9;
if(str[i]==' ')
{
memset(st,0,sizeof(st));
flag=1;
j=0;
}
}
if(flag==1)
{
b=a*10;
flag=0;
}
}
if(b!=0)
{
return b+a;
}
return a;
}
int main()
{
char str[100],str1[100],str2[100];
while(gets(str))//gets用于字符串数组
{
int i,j=0,k=0,flag=0,a=0,b=0;
for(i=0;str[i]!='=';i++)
{
if(str[i]=='+')
{
flag=1;
i++;
continue;
}
if(str[i+1]!='+'&&flag==0)
{
str1[j]=str[i];
j++;
}
if(str[i+1]!='='&&flag==1)
{
str2[k]=str[i];
k++;
}
}
str1[j]='\0';
str2[k]='\0';
a=change(str1);
b=change(str2);
if(a==0&&b==0)
break;
cout<<a+b<<"\n";
}
return 0;
}
高手版:from @qwn3213 https://zhidao.baidu.com/question/2076303904597495548.html
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
//By:@qwn3213
//2015.09.02
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;
}在这里插入代码片