0

谁能告诉我如何在C中将两个数字数组相乘?数字数组基本上来自两个包含数字的字符串。例如:123456 和 132465。

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

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

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

现在我必须将这两个数组相乘。请帮忙。

4

6 回答 6

5

目前尚不清楚您究竟想要乘以什么。如果您需要在 a 中将两个以 null 结尾的字符串相乘char[],您可以使用 将它们转换为intatoi

int result = atoi(str1) * atoi(str2);
于 2009-12-08T19:27:25.127 回答
3

如果您想使用纸笔算术并且不知道如何操作,这里是插图

于 2009-12-08T19:30:21.740 回答
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

于 2010-07-17T14:04:34.073 回答
0

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

如果它们太大而无法放入整数:

  • 使用诸如gmp之类的库

  • 或使用纸笔算法,但您将重新发明轮子。

于 2009-12-08T19:28:16.637 回答
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()函数。

于 2009-12-08T19:31:31.427 回答
-1

如果是针对实际项目,请进行转换。

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

于 2009-12-08T19:33:27.333 回答