gpt4 book ai didi

C++ 数组不工作

转载 作者:行者123 更新时间:2023-11-28 06:21:18 26 4
gpt4 key购买 nike

我正在编写一个 C++ 代码,让用户可以将 10 个值输入到一个数组中。然后程序应该显示存储在数组中的最大值和最小值。到目前为止,我的代码完成了这些要求,但是,在运行代码时,无论输入哪个数字,程序都会返回 -858993460 作为数组中的最小数字。然而,最大的数字会毫无问题地返回。我现在已经用同样的问题从头开始重写了两次代码。使用 Visual Studio 编译。谢谢您的帮助。

#include <iostream>

using namespace std;

int main()
{
int numbers[10];
int smallest = 0;
int largest = 0 ;
int temp = 0;

for (int i = 0; i < 10; i++)
{
cout << "Please enter a number: " << endl;
cin >> numbers[i];
}

smallest = numbers[0];
largest = numbers[0];


for (int i = 1; i <= 10; i++)
{
temp = numbers[i];
if (temp < smallest)
smallest = temp;

if (temp > largest)
largest = temp;
}

cout << "The largest number is: " << largest << endl;
cout << "The smallest number is: " << smallest << endl;

}

最佳答案

计算最小数字的循环有 i <= 10而不是 i < 10作为它的条件。这意味着它的最后一次迭代将访问 numbers[10] , 但数组中的最高有效索引是 numbers[9] .您正在访问内存中恰好位于数组末尾之后的任何字节,这些字节在解释为整数时显然代表数字 -858993460。

您还从 1 开始循环,这是不正确的,因为数组的第一个元素是 numbers[0] .我猜你错误地认为数组索引从 1 而不是从 0 开始计数,但你的第一个循环是正确的。

将第一个循环更改为使用 <而不是 <= ,并将其更改为从 0 而不是 1 开始计数。

关于C++ 数组不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29269541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com