2、(两个数相减结果为负)
*/
intcmp(chars[],chart[])
{
chartmp[SIZE];
intls=strlen(s),lt=strlen(t);
if(ls>lt
3、
4、ls==lt&&strcmp(s,t)>=0)
return1;
strcpy(tmp,s);
strcpy(s,t);
strcpy(t,tmp);
return-1;
}
/*
进行加法运算时每一数位上的范围判断,如果满10了则要向高位进位
*/
voidcheck_add(inttmp[],intn,charresult[])
{
5、
inti,j,k=0;
for(i=0;i=0;j--)
result[k++]=tmp[j]+'0';
result[k]=0;
if(i<0)strcpy(result,"0");
}
/*
减法运算时对每一位的判断,如果满-11了(注意不是-10)则要向高位借位
*/
voidcheck_sub(inttmp[],intn,charresult[])//返
6、回值1表示正,-1表示负
{
inti,j,k=0;
for(i=0;i0)i--;
for(j=i;j>=0;j--)
result[k++]=tmp[j]+'0';
result[k]=0;
}
/*
执行加法运算,result存放结果
*/
voidadd(chars[],chart[],charresult[
7、])
{
intls=strlen(s);
intlt=strlen(t);
inti,j,k;
inttmp[SIZE*2]={0};
i=ls-1,j=lt-1,k=0;
while(i>=0&&j>=0)
{
tmp[k]=(int)(s[i]-'0')+(int)(t[j]-'0');
i--;j--;k++;
}
while(i>=0)
{
tmp[k]=(int)(s[i]-'0');
i--;k++;
}
while(j>=0)
{
tmp[k]=(int)(t[j]-'0');
j--;k++;
}
chec
8、k_add(tmp,k,result);
}
/*
执行减法运算,注意如果被减数比减数小时要交换两个数的位置,并给结果添加一个负号
*/
intsub(chars[],chart[],charresult[])//返回值1表示正,-1表示负
{
intls=strlen(s);
intlt=strlen(t);
inti=ls-1,j=lt-1,k=0;
inttmp[SIZE*2]={0};
intret=cmp(s,t);
if(ret==-1)
{
ret=i;
i=j;
j=ret;
ret=-1;
}
while(
9、i>=0&&j>=0)
{
tmp[k++]=s[i]-t[j];
i--,j--;
}
while(i>=0)tmp[k++]=(int)(s[i--]-'0');//在比较s,t大小之后不会出现j>=0的情况
check_sub(tmp,k,result);
if(ret==-1)
{
chartmp2[SIZE];
strcpy(tmp2,s);
strcpy(s,t);
strcpy(t,tmp2);
}
returnret;
}
/*
执行乘法运算,最后两个reverse函数是为了复原对s和t做出的改变,避免影响后
10、面的除法运算的结果,如果单独执行乘法运算可以不要
*/
voidmul(chars[],chart[],charresult[])
{
intls=strlen(s);
intlt=strlen(t);
reverse(s,ls);
reverse(t,lt);
inttmp[SIZE*2