谁能告诉我如何在C中将两个数字数组相乘?数字数组基本上来自两个包含数字的字符串。例如:123456 和 132465。
编辑:我有两个字符串S1 = "123456"
和S2="132546"
. 然后我将这两个字符串转换为整数数组,即 int IS1[6] 和 IS2[6] 以便
IS1[1] = 1, IS1[2] = 2......
和
IS2[1] = 1, IS2[2] = 3.....
现在我必须将这两个数组相乘。请帮忙。
目前尚不清楚您究竟想要乘以什么。如果您需要在 a 中将两个以 null 结尾的字符串相乘char[]
,您可以使用 将它们转换为int
值atoi
:
int result = atoi(str1) * atoi(str2);
如果您想使用纸笔算术并且不知道如何操作,这里是插图。
我只是编写了一个简单的程序,使用算法长乘法将存储在文件中 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
好吧,如果你想生成一个包含乘法的数组,你可以使用:
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()函数。
如果是针对实际项目,请进行转换。
如果这是一个算法练习,请根据铅笔和纸的方法进行多重循环。