太残忍,半个月不做题,就对题目毫无感觉了,明明思路正确清晰,但敲的代码满满的bug,连输入字符串前要开辟空间都能无视。。。还在输入后就清空了却在后面一个劲的对它操作。。。略怀悲伤地把代码改好了。
#include<stdio.h>
#include<math.h>
#include<ctype.h>
#include<string.h>
#include<stdlib.h>
int main(){
char a[1024];
char b[1024];
char tem[1024];
memset(a,'\0',1024);
memset(b,'\0',1024);
memset(tem,'\0',1024);
while(scanf("%s%s",a,b)!=EOF){
int alen=strlen(a);
int blen=strlen(b);
for(int i=0;i<alen;i++){
tem[i]=a[alen-1-i];
}
memset(a,'\0',1024);
strcpy(a,tem);
memset(tem,'\0',1024);
for(int i=0;i<blen;i++){
tem[i]=b[blen-1-i];
}
memset(b,'\0',1024);
strcpy(b,tem);
memset(tem,'\0',1024);
memset(a+alen,'0',1024-alen);
memset(b+blen,'0',1024-blen);
//--------------------------------------------- 加法
int len=alen>blen?alen:blen;
int t=0;
int i;
for(i=0;i<len;i++){
tem[i]='0'+t+(a[i]-'0'+b[i]-'0')%10;
t=(a[i]-'0'+b[i]-'0')/10;
}
if(t)tem[i]='0'+t+(a[i]-'0'+b[i]-'0')%10;
len=strlen(tem);
for(int i=len-1;i>=0;i--){
printf("%c",tem[i]);
}
printf("\n");
//--------------------------------------------------减法
int jw=0;
for(i=0;i<len;i++){
for(i=0;i<len;i++){
if(alen>blen){
if(a[i]<b[i]){
jw=1;
}
tem[i]='0'+(a[i]-t+jw*10-b[i]);
if(jw){
t=1;
jw=0;
}else t=0;
}else{
if(a[i]>b[i]){
jw=1;
}
tem[i]='0'+(b[i]-t+jw*10-a[i]);
if(jw){
t=1;
jw=0;
}else t=0;
}
}
}
len=strlen(tem);
for(int i=len-1;i>=0;i--){
printf("%c",tem[i]);
}
memset(a,'\0',1024);
memset(b,'\0',1024);
memset(tem,'\0',1024);
}
}