【问题标题】:Multiplying two number arrays将两个数字数组相乘
【发布时间】:2010-12-24 13:32:37
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 预期的结果是什么?
  • 乘如何?字符串[0] * 字符串[1]?还是遍历数组?
  • 好吧,如果你把字符串转换成IS1[1]=1,……那么使用atoi已经来不及了,但是数组IS1表示的数字是IS1[6] + 10 * IS1[5] + 100 * IS1[4] + ...

标签: c arrays string digits


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    如果您想使用纸笔算术但不知道如何操作,这里是illustration

    【讨论】:

    • 不错的链接。关于“笔和铅笔”,其中一个必须能够从另一个接收标记。
    • 糟糕,帕斯卡,修复了这个问题。但这很有趣。
    【解决方案3】:

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

    示例:

                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

    【讨论】:

      【解决方案4】:

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

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

      • 使用gmp等库

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

      【讨论】:

        【解决方案5】:

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

        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() 函数。

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-10-10
            • 2013-09-21
            • 2017-09-13
            • 1970-01-01
            • 2013-12-19
            • 2010-10-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多