高精度加法
我写了一个高精度加法的程序,但是结果错误,不知道为什么?程序代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> #define ZERO -99 int main() { char a[10]={0},b[10]={0},sum[10]={0}; int length_a,length_b,i,max; memset(sum,ZERO,sizeof(sum)); gets(a),gets(b);//获取字符串 length_a=strlen(a),length_b=strlen(b);//获取字符串长度 if(length_a>length_b) max=length_a;//获取最长串 else max=length_b; //转换为数字串 for(i=0;i<length_a;i++) a[i]=a[i]-48; for(i=0;i<length_b;i++) b[i]=b[i]-48; //end for(i=max-1;i>=0;i--) { sum[i]=a[i]+b[i];//相加 while(sum[i]>=10)//如果大于10,则进位 sum[i]=sum[i]-10,sum[i-1]=sum[i-1]+1; } i=0; while(sum[i]!=ZERO) printf("%d",sum[i]),i++; system("pause"); return 0; }