考中程请注意:特大发现,《程序员教程》中有错误,好像!!!???
《程序员教程》中好像有错啊,今晚发现了!!!
《程序员教程》PAGE333中,
[函数]长整数除普通整数函数
用数组a[]存储K位长整数m: m=a[k]*10^(k-1)+a[k-2]*10^(k-2)+```+a[1]*10^0
a[0]=k
长整数除普通整数运算函数divint(int *a,int j)实现将存于a中的长整数除普通整数j,并将商存于a中,函数返回整除后的余数。
(formal函数是让存储整数的数组的每个元素只存储长整数的一位数字)
int divint(int *a,int j)
{ int p,k;
k=p=a[0]; a[0]=0;
while(p>0){
a[p-1]+=a[p]%j*10;
a[p]=a[p]/j;
if(a[k]==0)k--;
p--;
}
p=a[0]; ————————>我觉得这步应该是:p=a[0]/10
a[0]=k;
formal(a);
return p;
}
请大虾指点!!!