我试图solve
你已经给出了一个int数组,你必须返回它的总和。
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <cstdlib>
using namespace std;
int main(){
int n;
cin >> n;
int k;
vector<int> arr(n);
for(int arr_i = 0;arr_i < n;arr_i++){
cin >> arr[arr_i];
k = k + arr[arr_i];
//cout << "arr = " << arr[arr_i] << " k " << k << endl; // [0]
if (arr_i == (n-1))
{
cout << k;
}
}
return 0;
}
这回归没有。而不是总和。
但是当取消注释[0]行时。代码开始正常工作。
P.S。我通过将cout
更改为cerr
来找到解决方案。
但是想知道它为什么不起作用。
答案 0 :(得分:1)
作为另一个答案,初始化k
,将if
移出循环
vector<int> arr(n);
int k = 0;
for(int arr_i = 0;arr_i < n;arr_i++){
cin >> arr[arr_i];
k = k + arr[arr_i];
//cout << "arr = " << arr[arr_i] << " k " << k << endl; // [0]
}
cout << k;
作为您的问题,不再需要std::vector
int sum = 0, num;
for(int arr_i = 0;arr_i < n;arr_i++){
cin >> num;
sum = sum + num;
}
std::cout << sum << std::endl;
答案 1 :(得分:1)
在使用之前初始化k
,否则它将包含垃圾值int k = 0
;
答案 2 :(得分:0)
正如建议的其他答案(+1),您需要初始化k
。但是,我认为最初为它分配第一个值并减少迭代次数会稍微好一些:
vector<int> arr(n);
if (n > 0) {
int k = arr[0];
for(int arr_i = 1;arr_i < n;arr_i++){
//Your cycle
}
}