#include
void input(char*s)
{scanf("%s",s);}
void output(char*s)
{printf("%s",s);}
void add(char*s1,char*s2,char*s)
{int i,j,k,k1,t=0;
for(i=0;s1[i];i++);
for(j=0;s2[j];j++);
i--,j--;
k=i>j?i:j;
k1=k+1;
s[k1]='\0';
for(;i>=0&&j>=0;k--)
{
s[k]=s1[i--]+s2[j--]-'0'+t;
t=s[k]>'9';
if(t)s[k]-=10;
}
for(;i>=0;k--)
{
s[k]=s1[i--]+t;
t=s[k]>'9';
if(t)s[k]-=10;
}
for(;j>=0;k--)
{
s[k]=s2[j--]+t;
t=s[k]>'9';
if(t)s[k]-=10;
}
if(t)
{
for(;k1>=0;k1--)s[k1+1]=s[k1];
s[0]='1';
}
}
void sub(char*s1,char*s2,char*s)
{int i,j,k,k1,t=0;
for(i=0;s1[i];i++);
for(j=0;s2[j];j++);
i--,j--;
k=i>j?i:j;
k1=k+1;
s[k1]='\0';
for(;j>=0;k--)
{
s[k]=s1[i--]-s2[j--]+'0'-t;
t=s[k]<'0';
if(t)s[k]+=10;
}
for(;i>=0;k--)
{
s[k]=s1[i--]-t;
t=s[k]<'0';
if(t)s[k]+=10;
}
}
int comp(char*s1,char*s2)
{int i,j;
for(i=0;s1[i];i++);
for(j=0;s2[j];j++);
if(i>j)return 1;
if(i<j)return -1;
for(i=0;i>=0&&s1[i]==s2[i];i++);
if(s1[i]>s2[i])return 1;
if(s1[i]<s2[i])return -1;
return 0;
}
int main()
{
char s1[100],s2[100],s[100];
input(s1);
input(s2);
add(s1,s2,s);
output(s1);printf("+");
output(s2);printf("=");
output(s);printf("\n");
output(s1);printf("-");
output(s2);printf("=");
if(comp(s1,s2)>=0)sub(s1,s2,s);
else {sub(s2,s1,s); printf("-");}
output(s);printf("\n");
getch();
return 0;
}
s[k]=s1[i--]-'0+s2[j--]-'0'+t;
這一段要干什麼用?比'9'大是什麼?A?
for(;i>=0;k--)
{
s[k]=s1[i--]+t;
t=s[k]>'9';
if(t)s[k]-=10;
}