我想根据内部循环迭代的项目数不断添加数组中的每个元素。如果输入大小为 3,则外部循环也将迭代 3 次,并且对于每次迭代,内部循环也迭代 3 次,总共迭代 9 次。我想弄清楚的是,我将如何连续不断地重复添加数组中的所有项目,以 9 倍返回和第四次返回到元素?
int sum = 0;
int arr[] = {1, 5, 0, 5, 5};
int size = 3;
for(location = 0; location < size; location++)
{
for(location3 = 0; location3 < size; location3++)
{
sum = sum + arr[location3];
printf("%d %d %d\n", location+1, location3, sum);
}
}
由于上述代码的输入大小为 3,因此外层循环迭代 3 次,对于外层循环的每次迭代,内层循环迭代 3 次。它只添加数组中的前 3 个元素,然后从头返回。我想要的是将数组中的所有项目(例如 1+5+0+5+5 和重复 sum + 1+5+0+5 总共 9 次)连续添加 9x 因为它是总迭代.有什么帮助吗?这是我的预期输出:
1 0 1
1 1 6
1 2 6
2 0 11
2 1 16
2 2 17
3 0 22
3 1 22
3 2 27
最佳答案
给你
#include <stdio.h>
int main(void)
{
int sum = 0;
int arr[] = { 1, 5, 0, 5, 5 };
const size_t N = sizeof( arr ) / sizeof( *arr );
size_t size = 3;
for ( size_t location = 0; location < size; location++ )
{
for ( size_t location3 = 0; location3 < size; location3++ )
{
sum = sum + arr[( location3 + location * size ) % N];
printf( "%zu %zu %d\n", location+1, location3, sum );
}
}
return 0;
}
程序输出为
1 0 1
1 1 6
1 2 6
2 0 11
2 1 16
2 2 17
3 0 22
3 1 22
3 2 27
关于c - 重复添加列表中的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57820817/