c++ - 当向量有 6 个元素(C++、向量、循环)时,程序打印异常数字
问题描述
我正在进入编码领域,并且一直在 Codecademy 学习一些 C++。我编写了以下代码作为使用向量练习的一部分,我必须编写一个程序来查找向量中偶数的总和和奇数的乘积
#include <iostream>
#include <vector>
int main() {
//Declaring variables
int i, sum = 0;
int product = 1;
std::vector<int> example = {2,4,3,6,1,8};
//Loop for calculations
for (i = 0; i <= example.size(); i++)
{
if (example[i] % 2 == 0)
{
sum = sum + example[i];
}
else
{
product = product * example[i];
}
}
std::cout << "Sum of even numbers: " << sum << "\n";
std::cout << "Product of odd numbers: "<< product << "\n";
}
这段代码的关键在于,奇数乘积的输出是 396147。
删除第 6 个元素会产生正确的结果,因为我看到的输出是 3(这是我无论如何都应该得到的输出,因为我没有更改向量中奇数的数量)。
同样,添加元素也会让程序打印正确的数字,这让我认为每当我正好有 6 个元素时,计算向量中奇数的乘积就会出现问题。
请注意,无论元素的数量如何,计算向量中偶数的总和仍然是合适的。
不同向量的输出示例:
具有 6 个元素的向量:std::vector example = {2,4,3,6,1,9}; -> 奇数乘积的输出是 3565323。
std::vector 示例 = {2,4,3,6,1,5}; -> 奇数乘积的输出是 1980735。
具有 5 个元素的向量:std::vector example = {2,4,3,6,1}; -> 奇数乘积的输出是 3。
具有 7 个元素的向量:std::vector example = {2,4,3,6,1,4,8}; -> 奇数乘积的输出是 1980735。
知道为什么会这样吗?谢谢。
解决方案
应该是for (i = 0; i < example.size(); i++)
因为数组/向量索引从开始0
并且最后一个条目具有 index size()-1
。
推荐阅读
- python - 混淆矩阵无法显示所有标签
- raspberry-pi - 添加 -t 4:float 选项时出现 MBPOLL 错误
- javascript - 如何确定在图表js上单击了哪个栏
- docker - Docker Stack LTS 总是会从头开始重新下载和重新创建 GHC
- windows-installer - Installshield 中的属性正在重置
- python - 在不使用循环的情况下计算 numpy 中多个多项式的根
- c++ - 我正在尝试安装 MinGW,但总是无法安装
- netsuite - 从 PO 转换项目收据保存最后一个项目
- php - 尝试发送 api 请求时被踢出会话 | Laravel
- c# - 如何获取哪台计算机(IP和名称)访问了C#中共享文件夹中的文件