[英]How to add two arrays to produce a third one?
这是我的代码:
#include <stdio.h>
int main()
{
int integer1[10], integer2[10], integertotal[10];
int i, j, index;
for (i = 0; i < 10; i++)
integer1[i] = 2 * (i + 4);
for (i = 0; i < 10; i++)
printf(" %d", integer1[i]);
printf("\n");
for (j = 0; j < 10; j++)
integer2[j] = 3 * (j + 3);
for (j = 0; j < 10; j++)
printf(" %d", integer2[j]);
printf("\n");
for (index = 0; index < 10; index++)
integertotal[index] = integer1[i] * 12 + integer2[j] * 10;
for (index = 0; index < 10; index++)
printf(" %d", integertotal[index]);
printf("\n\n");
for (index = 0; index < 10; index++)
printf("%d %d+%d=%d\n", index, integer1[i], integer2[j], integertotal[index]);
}
我希望输出应该是:
(Integer1) 8 10 12 14 16 18 20 22 24 26
(Integer2) 9 12 15 18 21 24 27 30 33 36
(Integertotal) 374 484 594 704 814 924 1034 1144 1254 1364
但是实际结果是:
(Integer1) 8 10 12 14 16 18 20 22 24 26
(Integer2) 9 12 15 18 21 24 27 30 33 36
(Integertotal) 80 92 104 116 128 140 152 164 176 188
我认为您之前输入的“期望输出”是错误的(我认为应该是: 186 240 294 348 402 456 510 564 618 672
),并且您有不必要的循环和额外的索引变量。 再检查一遍。 这是我认为您要执行的操作:
int main() {
int integer1[10], integer2[10], integertotal[10];
int i;
for (i = 0; i < 10; i++) {
integer1[i] = 2 * (i + 4);
printf(" %d", integer1[i]);
}
printf("\n");
for (i = 0; i < 10; i++) {
integer2[i] = 3 * (i + 3);
printf(" %d", integer2[i]);
}
printf("\n");
for (i = 0; i < 10; i++) {
integertotal[i] = integer1[i] * 12 + integer2[i] * 10;
printf(" %d", integertotal[i]);
}
printf("\n");
for (i = 0; i < 10; i++)
printf("%d %d+%d=%d\n", i, integer1[i], integer2[i], integertotal[i]); //I don't understand the output you want. 8+9=186? Why?
printf("\n");
return 0;
}
在第三个循环中,您将i和j用作integer1和integer2的索引,因此您尝试访问这两个数组中不存在的11个项目。 所以我认为您的代码应该是这样的。
#include <stdio.h>
int main()
{
int integer1[10], integer2[10], integertotal[10];
int i, j, index;
for (i = 0; i < 10; i++)
integer1[i] = 2 * (i + 4);
for (i = 0; i < 10; i++)
printf(" %d", integer1[i]);
printf("\n");
for (j = 0; j < 10; j++)
integer2[j] = 3 * (j + 3);
for (j = 0; j < 10; j++)
printf(" %d", integer2[j]);
printf("\n");
for (index = 0; index < 10; index++)
integertotal[index] = integer1[index] * 12 + integer2[index] * 10;
for (index = 0; index < 10; index++)
printf(" %d", integertotal[index]);
printf("\n\n");
for (index = 0; index < 10; index++)
printf("%d %d+%d=%d\n", index, integer1[index], integer2[index], integertotal[index]);
}
如何添加两个数组以产生第三个数组?
我们可以写一个像这样的函数
void sum_arrays(size_t n, int *src_1, int *src_2, int *dest)
{
for (size_t i = 0; i < n; ++i)
{
// Note that 'i' is local, initialized and it is used for all the arrays
dest[i] = src_1[i] + src_2[i];
}
}
当然,这不会产生OP期望的输出,但是由于Bishal Jaiswal显然是对“正确”公式进行了反向工程,我们可以使用它
void calc_array(size_t n, int *src_1, int *src_2, int *dest)
{
for (size_t i = 0; i < n; ++i)
{
dest[i] = (src_1[i] * 12 + src_2[i] * 10 + (i + 1)) * 2;
// ^^^ ^^^ ^^^^^
}
}
可测试的在这里 。
在提问者发布的代码中,除了使用错误的公式外,数组还使用错误的变量进行索引
int integer1[10], integer2[10], integertotal[10];
int i, j, index; // <---
for (i = 0; i < 10; i++)
// ...
for (j = 0; j < 10; j++)
// ...
// Now both 'i' and 'j' are equal to 10
// ...
for (index = 0; index < 10; index++)
integertotal[index] = integer1[i] * 12 + integer2[j] * 10;
// Those are out of bounds now ^^^ ^^^
// ...
// Same later
for (index = 0; index < 10; index++)
printf("%d %d+%d=%d\n", index, integer1[i], integer2[j], integertotal[index]);
// ^^^ ^^^
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.