大数减法 void Move(char a[]) //当结果第一位为零时,用此函数将有效位向前移动一位 { int i,len,cnt=0; len=strlen(a); if(a[0]=='0') for(i=0;i<=len;i++) a[i]=a[i+1]; } void sub(char a[],char b[]) //差存放在a数组中 { bool flag=0; //判断是否有借位 int len1,len2,sub1,sub2; len1=strlen(a);len2=strlen(b); while(len2>0) //当减数的长度大于0,从数组最后一位开始处理 { sub1=a[len1-1]-'0'; sub2=b[len2-1]-'0'; if(flag) sub1--; flag=(sub1>=sub2?0:1); if(flag) sub1+=10; a[len1-1]=(sub1-sub2)+'0'; len1- -; len2- -; } while(len1>0) //减数长度已为零,被减数长度不为0 { Int sub=a[len1-1]-'0'; if(flag) { sub--; if(sub>=0) { a[len1-1]=sub+'0'; flag=0; } else a[len1-1]='9'; } len1- -; } Move(a); }