谁能告诉我如何乘两个数字阵列使用C? 数阵列基本上是由包含数字两个字符串的。 如:123456和132465。
编辑:我有两个字符串S1 = "123456"
和S2="132546"
然后我转换这两个字符串到整数的数组,即INT IS1 [6]和IS2 [6],使得
IS1[1] = 1, IS1[2] = 2......
和
IS2[1] = 1, IS2[2] = 3.....
现在,我必须mulitply这两个arrrays。 请帮忙。
谁能告诉我如何乘两个数字阵列使用C? 数阵列基本上是由包含数字两个字符串的。 如:123456和132465。
编辑:我有两个字符串S1 = "123456"
和S2="132546"
然后我转换这两个字符串到整数的数组,即INT IS1 [6]和IS2 [6],使得
IS1[1] = 1, IS1[2] = 2......
和
IS2[1] = 1, IS2[2] = 3.....
现在,我必须mulitply这两个arrrays。 请帮忙。
目前尚不清楚你要乘什么。 如果您需要乘两个空的终止字符串char[]
你可以将它们转换为int
与价值观atoi
:
int result = atoi(str1) * atoi(str2);
如果你想使用的纸张和铅笔算术,不知道该怎么做,这里是举例说明 。
我只是编写一个简单的程序乘用算法长乘法存储在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
如果你的数字是足够小,它们解析成整数( atoi
)。
如果它们太大,无法进入整数:
使用库如GMP
或用铅笔和纸的算法,但你会被重新发明轮子。
好吧,如果你想生成包含乘法的数组,你可以使用:
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()所提到的功能。
如果它是一个真实的项目,做了转换。
如果是这种算法的锻炼,根据笔和纸的方法做多重循环。