c - 重复添加列表中的数字?

标签 c loops for-loop

我想根据内部循环迭代的项目数不断添加数组中的每个元素。如果输入大小为 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/

相关文章:

c - 有什么方法可以在我的程序中使用常量而不将其存储在内存中?

c - Linux - 为什么每次运行程序时程序中断指针 (brk/sbrk) 都不同?

在 AIX 上使用 ioctl 的网络接口(interface)的硬件地址

python - 计算 R 或 Python 中同一列中行值 A 和行值 B 的事件发生次数

javascript - 如何在 jQuery 中使函数重复/循环?

excel - 如何使用VBA将excel中的单元格值循环到网站文本框中?

java - 需要帮助在 for 循环中声明变量 (Java)

c++ - 检测文件描述符何时来自/proc

c++ - 何时使用 if 语句选择多个循环而不是单个循环

Javascript For 不完成数组循环