【问题标题】:Addition numbers as a char* [C++] without string.h不带 string.h 的 char* [C++] 加法数字
【发布时间】:2018-11-08 00:35:47
【问题描述】:

我想添加两个 char* 中的数字。 例如:

char aux1[100];
char aux2[100];
char answer[100];

aux1="913";
aux2="88";

answer= aux1+aux2; //1001

当然最后一行是错误的。 我尝试使用 atoi,但我不能使用字符串库。我要添加不能加入 int 或 long int 的数字。我只能使用 char* 并且答案必须在 char* 中。

减“-”也一样。如果是负数,则符号转到第一个位置 0。

我正在考虑将数字转换为数字并解决它,但我不知道。

【问题讨论】:

  • -2928182727193929287218838283828432983 无法加入int
  • 这甚至不适合long long intint64。因此,除非您改用floatdouble,否则您将不得不使用支持算术运算的任意精度库。当数字为正时,逐个数字地处理事情很容易,但当涉及到负数时,就会变得棘手。最好让预先存在的库为您完成繁重的工作
  • 这就是为什么应该使用 char*。该数字无法放入 long long int。
  • 这就是为什么你应该使用预先存在的arbitrary-precision library

标签: c++ char character add subtraction


【解决方案1】:

您可以使用以下算法。你可能从小学就熟悉:

  • 用前导零填充较短的字符串,使长度相等。
  • 让进位为 0。
  • 从最后一个索引开始:
    • 将两个输入字符串的当前索引中的字符转换为该字符表示的数值。将进位和两个输入数字加在一起。结果将是一个数字 AB,其中 A 和 B 是数字(可能为 0)。
    • 将当前索引处的输出数字设置为 B。
    • 将进位设置为 A。
    • 重复直到处理完整个字符串。

我将把负数的处理留作练习。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 2019-08-04
    • 2020-08-16
    • 1970-01-01
    • 2013-05-22
    • 2018-04-14
    相关资源
    最近更新 更多