在c ++

时间:2016-04-27 04:10:03

标签: c++ arrays loops sum

我刚刚开始在大学学习C ++,我的任务是执行以下操作:我必须编写一些代码,使用迭代(即循环)来计算整数数组中项目的累积总和; 我的代码是:

int main() {
    int myArray[] = {1,2,3,4,5};
    int i;
    int j;
    j+= myArray[]; 
    for(i=0;i<5;i++){
    printf("%d\n",myArray[j]);
  }
}    

虽然这段代码没有产生我想要的东西,但我对下一步该做什么很困惑。

5 个答案:

答案 0 :(得分:2)

int main() {
    int myArray[] = {1,2,3,4,5};
    int sum = 0;
    for(int i=0; i<5; i++)
        sum += myArray[i] ;

    std::cout << sum;   
}

此处sum初始化为0,并且数组中的每个元素都会在循环中添加到sum

您可以使用std::accumulate执行相同操作,因此您不必担心数组的大小。

#include <iostream>
#include <algorithm>

int main() {
    int myArray[] = {1,2,3,4,5};
    std::cout << std::accumulate(std::begin(myArray), std::end(myArray), 0);
} 

请注意,std::begin()中引入了std::end()C++11。对于早期版本,您将不得不使用指针:

std::accumulate(myArray, myArray + 5, 0);

答案 1 :(得分:1)

我已经用注释和一行代码编辑了代码。请查看它们。

#include <cstdio>

int main() {
    // Array and index into it.

    int myArray[] = {1,2,3,4,5};
    int i;

    // Initialise sum to zero for starting.

    int sum = 0;

    // Adding whole array will not work (though it would be nice).
    // Instead, go through array element by element.

    // j += yArray[];
    for (i = 0; i < 5; i++) { 
        // Add element to sum and output results.

        sum += myArray[i];
        printf ("Adding %d to get %d\n", myArray[i], sum);
    }

    // Output final result.

    printf ("Final sum is: %d\n", sum);
}

另请注意,我已根据您的问题使用了printf,但您确实应该使用C ++流设施进行输入和输出。

该代码的输出是:

Adding 1 to get 1
Adding 2 to get 3
Adding 3 to get 6
Adding 4 to get 10
Adding 5 to get 15
Final sum is: 15

答案 2 :(得分:1)

请注意<algorithm>具有以下功能:

const int myArray[] = {1,2,3,4,5};
const int sum = std::accumulate(std::begin(myArray), std::end(myArray), 0);

如果你想自己做循环,你可以使用for-range(从c ++ 11开始):

const int myArray[] = {1, 2, 3, 4, 5};
int sum = 0;

for (auto e : myArray) {
    sum += e;
}

答案 3 :(得分:0)

您需要将j+= myArray[]放在循环中并将i放在myArray的[]内以执行求和操作。因此,您的代码可以按如下方式修改,以匹配您想要执行的操作。在对数组中的所有元素求和之后,它退出for-loop,并在第二个printf中打印最终求和。请注意,j已被sum取代,以便可读。

int main() {
    int myArray[] = {1,2,3,4,5};
    int sum=0; // sum
    for(int i=0; i<5; i++){
        sum += myArray[i];
        printf("%d\n", myArray[i]);
    }
    printf ("Sum: %d \n", sum);
}

您可以在此link看到可运行的代码。希望这有帮助。

答案 4 :(得分:0)

int main() {
    int yourArray[] = {1,2,3,4,5};
    int sum = 0;
    for(int i=0; i<5; i++) {
        sum = sum + yourArray[i] ;
        std::cout << sum;   
    }
}

在上面的代码中,for循环将迭代5次,每次将数组中的值添加到sum变量。

在第一次迭代中,sum的值将为0,yourArray[0]的值将为1,因此sum = 0 + 1;

在第二次迭代中,sum的值将为1,而yourArray[1]的值将为2,因此sum = 1 + 2;

等等......

每次迭代完成后,我们输出sum,即1,3,6,10,15。

所以15是数组所有值的完整和。