您的位置:首页 > 其它

大数减法

2015-05-12 12:01 183 查看
大数减法
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);
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: