如何将两个数字添加为字符串

时间:2013-02-13 18:41:17

标签: c string

我必须从标准输入中读取两个数字作为字符串,在C中。我怎样才能将它们的和作为字符串打印出来?我有:

char a[10],b[10];
printf("enter the two numbers");
scanf("%s%s",&a,&b);
char sum[20];
sum=?
请给我一点小小的提示? 谢谢!

5 个答案:

答案 0 :(得分:2)

就像在小学那样做

让我们说输入是“...... 69 + ... 63”

9 + 3     = 2 and 1 to go
6 + 6 + 1 = 3 and 1 to go
...

答案 1 :(得分:2)

使用编程方式执行此操作,就像在纸上进行编程一样。做一些小步骤,明确我们在纸上做的每一个小步骤,而不会注意到。

    00111
 ---------
     12345
 123456789
 ---------
 123469134
  • 注意不同的长度。您需要单独的变量来保存该信息。您需要找出两个长度 - 使用标准函数,或者编写自己的:字符串以二进制0结尾。
  • 注意我们在添加时如何倒退。您必须维护两个索引来访问两个字符串(字符数组)。
  • 注意我们如何延续加法5+9=14的高位数。您需要在另一个变量中维护它。

使用循环。添加完成后,您需要知道总长度,然后将其移到左边缘。因为我们事先并不知道我们会得到多长,所以您将从sum数组的右边缘开始写下答案。想一想,如何以及如何改善这一点。

答案 2 :(得分:2)

除非禁止这样做,否则我会接受以下内容:

  • 将输入字符串转换为数字。我会尝试strtol()

  • 添加数字

  • 将总和从数字转换为字符串。我会尝试snprintf()

答案 3 :(得分:1)

使用atoi将字符串转换为数字,然后将它们一起添加,然后使用printf等打印函数打印总和。见this

答案 4 :(得分:1)

chars是8位二进制数,就像较小的ints一样。我们必须解释它们以赋予它们作为字母的含义。

您的计算机可能使用ASCII标准。在ASCII中,表示字符char的{​​{1}}值实际上不具有数值0.它是48.幸运的是,数字都是连续的,因此0是49,等等。 / p>

1

(请注意char zero = '0'; printf("%d\n", zero); char one = '1'; printf("%d\n", one); > 48 > 49 中的%d格式标志表示“解释为整数”。)

由于printf是数字,我们可以用它们做数学。

chars

现在,您可以使用十进制数字来实现添加,并像在纸上一样进行操作。