指针处理大数各种情况
int main() { ???char c[1001],d[1001]; ???int a[1001],b[1001],i; ???cin>>c; ???a[0]=strlen(c); ???for (i=1;i<=a[0];i++) ???????a[i]=c[a[0]-i]-'0'; ???cin>>d; ???b[0]=strlen(d); ???for (i=1;i<=b[0];i++) ???????b[i]=d[b[0]-i]-'0'; } ? 大加大 复制代码 void djd(int *x,int *y,int *z) { ????int r,j=0,i; ????if (x[0]<y[0]) ???????z[0]=y[0]; ????for (i=1;i<=x[0];i++) ????{ ????????r=x[i]+y[i]+j; ????????j=r/10; ????????z[i]=r%10; ????} ????if (j) ???????z[++z[0]]=1; } ? 大加小 复制代码 void djx(int *x,int y,i=1; ????z[0]=x[0];??? ????r=x[i]+y+j; ????j=r/10; ????z[i]=r%10; ????while (j>0) ????{ ??????????z[++i]+=j%10; ??????????j/=10; ????} } ? 大乘大 复制代码 void dcd(int *x,j,i,k; ????z[0]=x[0]+y[0]-1; ????for (i=1;i<=x[0];i++) ????{ ????????j=0; ????????for (k=1;k<=y[0];k++) ????????{ ????????????r=x[i]*y[k]+j; ????????????j=r/10; ????????????z[i+k-1]=r%10; ????????} ????} ????while (j>0) ????{ ??????????z[++z[0]]=j%10; ??????????j/=10; ????} } ? 大乘小 复制代码 void dcx(int *x,i; ????z[0]=x[0]; ????for (i=1;i<=x[0];i++) ????{??? ????????r=x[i]*y+j; ????????j=r/10; ????????z[i]=r%10; ????} ????while (j>0) ????{ ??????????z[++z[0]]=j%10; ??????????j/=10; ????} } ? 在输出时,记得在输出前加上: 复制代码 while (a[a[0]]==0&&a[0]!=1) ?????????a[0]--; ? 这样如果*0或加、乘数首位有0也就没问题了 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |