C语言代码 大整数的加减法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
char symbol(char a[])
{
int i;
char b;
for(i=0;a[i]!='\0';i++)
{
if(a[i]=='+') b='+';
else if(a[i]=='-') b='-';
}
return b;
}
int change(int a)
{
int b;
b=a-'0';
return b;
}
int compare(int a,int b)
{
int c;
if(aelse c=b;
return c;
}
int main()
{
char input[10000],number1[10000],number2[10000],number3[10000];
int i,j,k,min,n,o,t,len,m,c,flag=0;
char f;
gets(input);
f=symbol(input);
for(i=0,j=0;input[i]!='+'&&input[i]!='-';i++,j++) number1[j]=change(input[i]);
i=i+1;
for(k=0;input[i]!='\0';i++,k++) number2[k]=change(input[i]);
min=compare(j,k);
n=j,o=k;
if(f=='+')
{
for(n=j,o=k,t=0;;n--,o--,t++)
{
if(t<=min)number3[t]=number1[n]+number2[o];
else if(n>=0)number3[t]=number1[n];
else if(o>=0)number3[t]=number2[o];
else break;
}
len=t-1;
if(number3[len]>9) printf("1");
for(m=len;len>0;len--,m--)
{
if(number3[len]>9) { number3[len]-=10; number3[len+1]+=1; m--;}
if(number3[m]>=10) { number3[m]-=10; number3[m+1]+=1; }
}
}
if(f=='-')
{
if(k==j) {
for(;;k--,j--)
if(number1[j]>number2[k]) { flag=0; break; }
else if(number1[j]
else if(k>j) printf("-");
for(t=0;;n--,o--,t++)
{
if(t<=min) {if(n>o) number3[t]=number1[n]-number2[o];
else if(flag==1) number3[t]=number2[o]-number1[n];
else if(flag==0) number3[t]=number1[n]-number2[o];
else number3[t]=number2[o]-number1[n];}
else if(n>=0)number3[t]=number1[n];
else if(o>=0)number3[t]=number2[o];
else break;
}
len=t-1;
for(m=len;len>0;len--,m--)
{
if(number3[len]<0) {number3[len]+=10; number3[len+1]-=1; m--;}
if(number3[m]<0) { number3[m]+=10; number3[m+1]-=1; }
}
}
for(c=t-1;;c--) {if(c>0)printf("%d",number3[c]);else break;}
return 0;
}