【问题标题】:Iterating through array using loop in c++ and program says "exit status -1"?在c ++中使用循环遍历数组并且程序说“退出状态-1”?
【发布时间】:2019-04-16 03:21:02
【问题描述】:

所以我正在努力适应我的硬件分配的数组。我有两个循环。第一个循环遍历序列,这很好,我想我不知道。然后第二个循环应该根据 size_of_array 的大小显示用户输入的所有输入(在这种情况下,它是 5,所以应该是用户输入的 5 辆汽车)。

当我运行它时,第一部分在输入方面工作得很好,但第二部分 F R E A K S 出来并给我“退出状态 -1” wtf?!?!?!??!

感谢帮助:

#include <iostream>
using namespace std;

int main() 
{
  int size_of_array = 5;
  string ideal_cars[size_of_array];
  int count;

  for (count = 1; count <= size_of_array; count++)
  {
    cout << "Enter car number " << count << "." << "\n";
    cin >> ideal_cars[count];
  }

  for (count = 0; count <= size_of_array; count++)
  {
    cout << "You entered " << ideal_cars[count] << ".";
  }


}

【问题讨论】:

  • 你跑过了数组的末端。在这两个循环中,您都希望从 0 开始,然后转到 count &lt; size_of_array
  • 您的代码没有显示从 int 值的 main 返回...未定义的行为?也许尝试“返回0;”在 main 的末尾。
  • @JerryCoffin 你是什么意思?您能否通过“数组结尾”的意思给出更多解释/见解?我以为我只是从 0 到 5 我不明白!谢谢你到目前为止的帮助
  • @2785528 main 在 C++ 中不需要 return 语句。
  • 首先,count = 1 表示它从 1 开始。然后,count &lt;= size_of_array 表示直到计数大于 5 才会退出,这意味着 count 在该循环中的最后一个值将是 5。

标签: c++ arrays loops exit status


【解决方案1】:

数组的第一个索引为 0,所以当size_of_array 为 5 时,可能的索引为 0、1、2、3、4。

  • 第一个元素是ideal_cars[0]
  • 第二个元素是ideal_cars[1]
  • 第三个元素是ideal_cars[2]
  • 第四个元素是ideal_cars[3]
  • 第五个元素是ideal_cars[4]

ideal_cars[5] 超出范围且不允许。有关图形说明,请参阅http://www.cplusplus.com/doc/tutorial/arrays

因此,在您的 for 循环中,您需要确保 count 小于且不等于 size_of_array

for (count = 0; count < size_of_array; count++)

例子:

#include <iostream>

using namespace std;

int main() 
{
  int size_of_array = 5;
  string ideal_cars[size_of_array];
  int count;

  for (count = 0; count < size_of_array; count++)
  {
    cout << "Enter car number " << count << "." << endl;
    cin >> ideal_cars[count];
  }

  for (count = 0; count < size_of_array; count++)
  {
    cout << "You entered " << ideal_cars[count] << "." << endl;
  }
  return 0;
}

演示:https://ideone.com/LWbSeu.

【讨论】:

  • 请再澄清一些?抱歉刚刚开始编码......我真的很困惑,并感谢更多解释。您能否就您的意思提供更多背景信息?为什么你所做的工作而不是我的工作?
  • 添加说明。
  • 为什么 Ideal_cars[5] 超出范围?当您的意思是超出范围时,您是指数组吗?我的数组也是从 0 开始的,那么它不应该是 0 1 2 3 4 吗?那是5个位置?那么,如果我计算 5 个元素,为什么它会超出范围呢?我真的很困惑。教科书代码看起来相同并且工作正常
  • 当您声明 string ideal_cars[5]; 时,您正在创建一个包含 5 个元素的数组。这 5 个元素可以通过ideal_cars[0]ideal_cars[1]ideal_cars[2]ideal_cars[3]ideal_cars[4] 访问。那么ideal_cars[5] 是第 6 个元素吗?请注意,您只使用 string ideal_cars[5]声明数组,ideal_cars[0..4]使用数组。
猜你喜欢
  • 2016-05-14
  • 2011-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 2021-12-17
相关资源
最近更新 更多