函数返回数组中偶数的和

时间:2016-03-28 05:10:08

标签: c++ arrays

所以给出的提示是“编写一个给出一个int数组的函数,并返回数组中偶数的总和。函数没有给出数组的长度,但是数组中的最后一个数字是-1。例如,如果数组包含{2,3,5,4,-1},则函数返回6.使用头文件int sumEven(int myArray [])。“

我到目前为止编写的代码是

 #include <iostream>
using namespace std;

int sumEven(int myArray[]){

int sum = 0;

for (int i=0; i++;){

if (myArray[i] >=0) {
    sum+=myArray[i];
}
}
return sum;

}

但它一直回归零?我没看到我在这里做错了什么

4 个答案:

答案 0 :(得分:4)

for()循环的典型参数顺序如下:

for(<initialize variable>; <end condition>; <increment variable>)

在您的示例中,您将i++作为for循环的第二个参数,这是不正确的。它将返回0(因为我从0开始,i ++是后递增,所以它返回0然后递增到1 )并且你的for循环将立即退出,因为0的计算结果为false。 / p>

相反,请将结束条件替换为您所描述的结束条件:myArray[i] != -1。您还应该在将数字添加到sum之前检查数字是否为偶数,这可以通过检查余数除以2是否为0来完成。

#include <iostream>
using namespace std;

int sumEven(int myArray[]){

    int sum = 0;

    for (int i=0; myArray[i] != -1; i++){
        if(myArray[i] % 2 == 0)
            sum += myArray[i];
    }

    return sum;
}

答案 1 :(得分:1)

int sumEven(int arr[]) {
    int sum = 0;
    // int len = (sizeof(arr)/sizeof(*arr));  // Since this will not work for all cases.
    // auto len = end(arr) - begin(arr);
    for (int i = 0; arr[i] >= 0; i++) {
        if(arr[i]%2==0)
            sum += arr[i];
    }
    return sum;
}

答案 2 :(得分:1)

错误发生在for循环中。您应该将for循环更改为for (int i=0; ; i++),并且还应添加break语句以退出for循环。

using namespace std;

int sumEven(int myArray[]){

int sum = 0;

for (int i=0; ; i++){

    if (myArray[i] >=0) {
        sum+=myArray[i];
    }
    else
    {
        break;
    }
}
return sum;

}

答案 3 :(得分:0)

我想

for (int i=0; i++;){

不进行迭代,导致条件继续循环是“i ++” - 最初为零。

将其替换为以下例如

for (int i=0; i < array_length; i++;){