我如何减去同等数字的大数字

How do i subtract equal digit large numbers?

本文关键字:数字 何减去      更新时间:2023-10-16

我减去了数字不平等的大数字,但我无法减去长度等于使用str [i] - '0'将其转换为整数数组。如果数字相等,我无法执行此操作。我无法使用ATOI函数。我所做的是将字符串转换为整数阵列,然后我使用sub_logic中的减法逻辑进行减法这是我用于减法数字数字的逻辑。

半答案,因为当更简单的方法可行时,我想不出一个充分的理由来调试询问者的算法。

这是您像孩子一样行事的绝佳机会。

  1. 将数字留作string S 1
  2. 通过将零以最短的速度预备使它们均相同。
  3. 如果被减去的数字(子图形(是较大的数字,请反转两个数字,因此您总是从较大的数字中减去较小的数字。记下您扭转了操作数的顺序。
  4. 从右到左工作,减去数字并根据需要从较大的数字中跟踪任何借款。
  5. 如果您扭转了操作数订单,则将结果标记为负。

1 您不必将字符分解为数字,因为没有理智的字符编码编码数字的顺序或定位。C 标准 [LEX.CHARSET] 需要此。

但是,跟踪借贷可能会迫使您使用更宽的存储空间,因为您可能会发现自己的数字高达18,而C 标准不能保证角色可以存储。如果数字在编码的末尾,则超越您可以存储在数字中的内容,并指望另一个字符。这不是我知道的每个字符,但不能保证。

您很可能(在此处假设ASCII(逃脱

if (a[index] < b[index]) 
{
    a[index - 1]--; // a > b as per step 3 above, so this can't happen with last digit.
    a[index] += 10;
}
result[index] = '0' + a[index] - b[index];

对于步骤4。我相信这是学校作业的一个很好的假设,但是我对生产代码更加谨慎,以确保a[index] += 10;不会溢出char

借来的数字将最终坐在';'顶上通过" A",没有人会在数学上关心。不过是破坏性的。a由于结果损坏