level 4
沸腾岩浆
楼主
我用高精度运算计算加法,为什么两个位数不同的数相加会出问题?程序有什么问题呢?以下是程序:#include
void main(){ int la,lb,i,j,k,a[50]={0},b[50]={0},c[50]={0}; char sa[50]; gets(sa); la=strlen(sa); for(i=1,j=la-1;i<=la;i++,j--) { a[i]=sa[j]-'0'; } char sb[50]; gets(sb); lb=strlen(sb); for(i=1,j=lb-1;i<=lb;i++,j--) { b[i]=sb[j]-'0'; } if(lb>la) { k=lb; } else { k=la; } for(i=1;i<=k;i++) { c[i]=c[i]+a[i]+b[i]; c[i+1]=c[i+1]+c[i]/10; c[i]=c[i]%10; } if(c[k+1]=1) { k=k+1; } for(i=k;i>0;i--) { printf("%d",c[i]); } }
2008年11月01日 11点11分
1
void main(){ int la,lb,i,j,k,a[50]={0},b[50]={0},c[50]={0}; char sa[50]; gets(sa); la=strlen(sa); for(i=1,j=la-1;i<=la;i++,j--) { a[i]=sa[j]-'0'; } char sb[50]; gets(sb); lb=strlen(sb); for(i=1,j=lb-1;i<=lb;i++,j--) { b[i]=sb[j]-'0'; } if(lb>la) { k=lb; } else { k=la; } for(i=1;i<=k;i++) { c[i]=c[i]+a[i]+b[i]; c[i+1]=c[i+1]+c[i]/10; c[i]=c[i]%10; } if(c[k+1]=1) { k=k+1; } for(i=k;i>0;i--) { printf("%d",c[i]); } }