现在想想,我还是太天真了,这码路水太深。。。。。
这不包含a+b大数版。。我还没学,学了再补充
1、a+b进阶版:输入英语单词和+、=符号来实现加法
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int fun(char *s)
{
if(!strcmp(s,"zero")) return 0;
if(!strcmp(s,"one")) return 1;
if(!strcmp(s,"two")) return 2;
if(!strcmp(s,"three")) return 3;
if(!strcmp(s,"four")) return 4;
if(!strcmp(s,"five")) return 5;
if(!strcmp(s,"six")) return 6;
if(!strcmp(s,"seven")) return 7;
if(!strcmp(s,"eight")) return 8;
if(!strcmp(s,"nine")) return 9;
}
int main()
{
char s[10];
int a,b;
while(1)
{
a=b=0;
while(scanf("%s",s)&&s[0]!='+')
{
a=a*10+fun(s);
}
while(scanf("%s",s)&&s[0]!='=')
{
b=b*10+fun(s);
}
if(!a&&!b) break;
printf("%d\n",a+b);
}
return 0;
}
2、a+b困难版:自个位开始三个自数字一个,实现加法
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
int main()
{
char a[99],b[99],s1[99],s2[99];
int A,B;
while(~scanf("%s %s",a,b))
{
memset(s1,0,sizeof(s1));
memset(s2,0,sizeof(s2));
int i,j=0,flag=0;
for(i=0;i<strlen(a);i++)
{
if(a[i]=='-')
flag=1;
if(a[i]>='0' && a[i]<='9')
s1[j++]=a[i];
}
A=atoi(s1);
if(flag==1)
A=-A;
flag=0;
j=0;
for(i=0;i<strlen(b);i++)
{
if(b[i]=='-')
flag=1;
if(b[i]>='0' && b[i]<='9')
s2[j++]=b[i];
}
B=atoi(s2);
if(flag==1)
B=-B;
int sum;
sum=A+B;
printf("%d\n",sum);
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
}
return 0;
}
3、a+b破解版:这个是在网上看的,就是觉得这个老哥头文件准备的挺齐的,忍不住收藏了
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<map>
#include<math.h>
#include<string.h>
#include<queue>
#include<vector>
#include<set>
#define LL long long
#define exp 1e-9
#define MAXN 1000010
using namespace std;
int main()
{
// freopen("D:\\in.txt","r",stdin);
int a,b,c,k,d1,d2;
while(scanf("%d%d%d",&a,&b,&k)!=EOF)
{
if(a==0&&b==0) break;
c=a+b;
while(k)
{
d1=a%10;
a/=10;
d2=b%10;
b/=10;
if(d1!=d2)
break;
k--;
}
if(k==0)
printf("-1\n");
else
printf("%d\n",c);
}
return 0;
}