我是C ++的初学者,我在c ++中对一个简单的和码有疑问。
这是我的代码:
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;
int sum;
int arr_i = 0;
cin >> n;
vector<int> arr(n);
while (arr_i != n)
{
cin >> arr[arr_i];
sum += arr[arr_i];
//cout << sum << endl;
if (arr_i == n - 1)
cout << sum;
arr_i++;
}
return 0;
}
输出没有&#34; cout&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;总和&#34;在if条件之前。
我该如何解决这个问题?
答案 0 :(得分:7)
您忘了将sum
初始化为0。
int sum = 0;
答案 1 :(得分:1)
正如前面提到的那样,sum并未初始化为0.在良好实践和样式方面,最好初始化在循环体之前的循环内修改的任何变量,以便有人可以轻松地阅读代码掌握变量的背景。
int main()
{
int n;
int sum;
int arr_i;
cin >> n;
vector<int> arr(n);
sum = 0;
arr_i = 0;
while (arr_i != n)
{
cin >> arr[arr_i];
sum += arr[arr_i];
//cout << sum << endl;
if (arr_i == n - 1)
cout << sum;
arr_i++;
}
return 0;
}
或者我更喜欢&#34;对于&#34;环...
int main()
{
int n;
int sum;
int arr_i;
cin >> n;
vector<int> arr(n);
for (sum = 0, arr_i = 0; arr_i != n; arr_i++)
{
cin >> arr[arr_i];
sum += arr[arr_i];
//cout << sum << endl;
if (arr_i == n - 1)
cout << sum;
}
return 0;
}