乘以两个数字数组

时间:2009-12-08 19:23:02

标签: c arrays string digits

有谁能告诉我如何在C中乘以两个数字数组?数字数组基本上是从包含数字的两个字符串派生的。例如:123456和132465。

编辑:我有两个字符串S1 = "123456"S2="132546"。然后我将这两个字符串转换为整数数组,即int IS1 [6]和IS2 [6],以便

IS1[1] = 1, IS1[2] = 2......

IS2[1] = 1, IS2[2] = 3.....

现在我必须多次使用这两个阵列。请帮忙。

6 个答案:

答案 0 :(得分:5)

目前尚不清楚你想要成倍增加。如果您需要在char[]中将两个空终止字符串相乘,则可以使用int将它们转换为atoi值:

int result = atoi(str1) * atoi(str2);

答案 1 :(得分:3)

如果你想使用纸笔算术并且不知道如何做到这一点,这里是illustration

答案 2 :(得分:1)

我只是编写一个简单的程序,使用算法长乘法将存储在2行中的两个数相乘。它可以乘以两个数字彼此超过10亿的数字

示例:

            23958233
            5830 ×
         ------------
            00000000  ( =      23,958,233 ×     0)
           71874699   ( =      23,958,233 ×    30)
          191665864   ( =      23,958,233 ×   800)
         119791165    ( =      23,958,233 × 5,000)

源代码:

请查看并发表评论 http://code.google.com/p/juniormultiply/source/browse/#svn/trunk/src

答案 3 :(得分:0)

如果您的数字足够小,请将它们解析为整数(atoi)。

如果它们太大而无法适应整体:

  • 使用gmp

  • 等库
  • 或使用铅笔纸算法,但你将重新发明轮子。

答案 4 :(得分:0)

好吧,如果你想生成一个包含乘法的数组,你可以使用:

int *a, *b, *c; // pointers to arrays of size n
for (unsigned i=0;i<n;++i)
  c[i] = a[i] * b[i];

如果你想要内在的产品,你可以这样做:

int *a, *b; // pointers to arrays of size n
int res = 0;
for (unsigned i=0;i<n;++i)
  res += a[i] * b[i];

如果像以前的答案所说的那样,你想要的是将两个数组视为数字,你可以使用上面提到的atoi()函数。

答案 5 :(得分:-1)

如果是真实项目,请进行转换。

如果这是算法练习,请根据铅笔和纸张方法进行多重循环。