所以给出的提示是“编写一个给出一个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;
}
但它一直回归零?我没看到我在这里做错了什么
答案 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++;){