在 C 程序中将两个数组表示的两个数字相加

cserver side programmingprogramming更新于 2024/8/31 21:18:00

数组表示的数字以这样的形式存储:数字的每个数字都由数组的一个元素表示。例如,

数组中的数字 234 为 {2,3,4}。

要将这样的数字相加,我们首先在最低有效位上添加数字,如果总和大于 10,则传播进位。此后,我们将对数组的下一个连续数字执行相同的过程并找到总和。

让我们举一个例子来添加两个数字 −

a = {2,9, 6}
b = {6, 3, 8}
输出:934

解释 −我们将添加数字的最低有效位,即 6+8 = 14,这将传递进位,然后对于相同的 9+3+1 = 13,将再次将进位传递到下一个。下一个总和将是 2+6+1 = 9。这将使总和 = 934。

算法

为了找到存储为数组的数字的总和。我们首先检查是否有任何数字有更多位数。如果是,那么我们将找到较小数字的和,然后再添加较大数字的位数。

此外,我们将检查一个进位数,它将跟踪可能出现在总和中并需要转发的进位,最初它将为零,并且在每次求和迭代之前也将其设为零。我们将逐个找到数字的总和并将其存储到数组中,然后打印它。

示例

#include <iostream>
using namespace std;
int Sum(int a[], int b[], int n, int m){
   int sum[n];
   int i = n - 1, j = m - 1, k = n - 1;
   int c = 0, s = 0;
   while (j >= 0) {
      s = a[i] + b[j] + c;
      sum[k] = (s % 10);
      c = s / 10;
      k--;
      i--;
      j--;
   }
   while (i >= 0) {
      s = a[i] + c;
      sum[k] = (s % 10);
      c = s / 10;
      i--;
      k--;
   }
   for (int i = 0; i <= n-1; i++) {
      cout<<sum[i];
   }
}
int main(){
   int a[] = { 5, 6, 9 };
   int b[] = { 3, 8 };
   int n = sizeof(a) / sizeof(a[0]);
   int m = sizeof(b) / sizeof(b[0]);
   cout<<"The sum is ";
   if (n >= m)
      Sum(a, b, n, m);
   else
      Sum(b, a, m, n);
   return 0;
}

输出

The sum is 607

相关文章