【问题标题】:Add the numbers inside the list repeatedly?重复添加列表中的数字?
【发布时间】:2019-09-06 11:05:57
【问题描述】:

我想根据内部循环迭代的项目数连续添加数组中的每个元素。如果输入大小为 3,则外循环也将迭代 3x,并且对于每次迭代,内循环也将迭代 3x,总共 9x。我想弄清楚我将如何连续重复地将数组中的所有项目添加到元素中,以 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 次),因为它是总迭代次数.有什么帮助吗?这是我的预期输出:

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

【问题讨论】:

  • 我不太明白你的解释。您的样本数据的预期结果是什么?
  • 如果你眯着眼睛看这个问题,你可以看到FizzBu​​zz。您甚至使用相同的值,即 3 和 5。

标签: c loops for-loop


【解决方案1】:

你来了

#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

【讨论】:

    【解决方案2】:

    您所需要的只是一个额外的变量,它将迭代数组的元素并在达到数组限制时初始化。

    int sum = 0;
    int arr[] = {1, 5, 0, 5, 5};
    int size = 3;  
    int location, location3;
    int elem = 0; //iterate array elements
    
    for(location = 0; location < size; location++)
    {
        for(location3 = 0; location3 < size; location3++)
        {
            sum = sum + arr[elem];  // use the extra variable
            printf("%d %d %d\n", location+1, location3, sum);
            elem++;
            if(elem == 5)  //Zero iterator
                elem = 0;
        }
    }
    

    【讨论】:

    • 您对 iterate 一词的使用在这里令人困惑; count 会更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 2018-12-02
    • 2020-07-16
    • 2018-12-13
    • 2022-01-19
    • 2021-04-26
    相关资源
    最近更新 更多