Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 重复添加列表中的数字?_C_Loops_For Loop - Fatal编程技术网

C 重复添加列表中的数字?

C 重复添加列表中的数字?,c,loops,for-loop,C,Loops,For Loop,我想根据内部循环迭代的项数不断地添加数组中的每个元素。如果输入大小为3,则外部循环也将迭代3次,对于每次迭代,内部循环也将迭代3次,总共迭代9次。我想弄清楚的是,如何连续不断地重复添加数组中的所有项目,以使其返回到元素的第9个和第4个 int sum = 0; int arr[] = {1, 5, 0, 5, 5}; int size = 3; for(location = 0; location < size; location++) { for(location3 = 0

我想根据内部循环迭代的项数不断地添加数组中的每个元素。如果输入大小为3,则外部循环也将迭代3次,对于每次迭代,内部循环也将迭代3次,总共迭代9次。我想弄清楚的是,如何连续不断地重复添加数组中的所有项目,以使其返回到元素的第9个和第4个

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);
    }
}  
给你

#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;
}

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

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;
    }
}
int和=0;
int arr[]={1,5,0,5,5};
int size=3;
int位置,位置3;
int元素=0//迭代数组元素
对于(位置=0;位置<大小;位置++)
{
对于(位置3=0;位置3
我不太明白你的解释。你的样本数据的预期结果是什么?如果你看这个问题时眯着眼睛,你会看到FizzBuzz。您甚至使用了相同的值,即3和5;伯爵会做得更好。
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
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;
    }
}