【问题标题】:Printing original array and changed array打印原始数组和更改后的数组
【发布时间】:2020-06-07 22:54:20
【问题描述】:

我正在做一个练习,我必须打印原始数组并向数组添加更多元素并打印这些元素。所以输出应该是

Original array:
[10, 20, 30]
After append values to the end of the array:
[10 20 30 40 50 60 70 80 90]

第二部分正在打印,但由于某种原因,原始数组元素不会打印。

int arr[9] = {10, 20, 30};

cout << "The original array elements are : " << endl;
for (int i = 0; arr[i] <= 3; ++i) 
{
  cout << arr[i] << endl;
}

arr[3] = {40};
arr[4] = {50};
arr[5] = {60};
arr[6] = {70};
arr[7] = {80};
arr[8] = {90};

cout << "After append values to the end of the array : " << endl;
for (int j = 0; arr[j] >= 9; ++j) 
{
  cout << arr[j] << endl;
}

这是我写的代码,谁能告诉我我做错了什么?

【问题讨论】:

  • 您似乎不了解 for 循环的工作原理。请参阅教科书中解释循环的部分。没有课本的可以参考here或者here
  • @MindOfMetalAndWheels 感谢您提供的资源!我只看过 YouTube 上的教程,现在只是想开始编程哈哈哈,但我一定会读的。

标签: c++ arrays for-loop


【解决方案1】:

因为

for (int i = 0; arr[i] <= 3; ++i)

意思是“循环直到arr[i]&lt;=3”,在你的情况下总是错误的。
你可能想要这个:

for (int i = 0; i < 3; ++i)

与第二个循环相同,而不是 arr[j] &gt;=9 你可能想要 j &lt; 9

更改后的输出是这样的:

The original array elements are :
10
20
30
After append values to the end of the array :
10
20
30
40
50
60
70
80
90

【讨论】:

  • 更改两个 for 循环以检查变量 (i/j) 而不是 arr[(i/j)] 而不仅仅是那个不工作的。
  • @STF_ZBR 啊是的,你是对的,我正在编辑答案以告诉他第二个循环
  • @STF_ZBR 非常感谢您的回答!现在第一部分正在工作gg
  • @Berto99 是她哈哈哈我已经修改了代码,第一部分正在运行!
  • @LingLing ups,对不起...对于第二部分的问题,正如我所说,将第二个循环的条件也更改为 j
【解决方案2】:
for (int i = 0; arr[i] <= 3; ++i)

应该是

for (int i = 0; i < 3; ++i)

同样j-loop 应该检查j &lt; 9,因为您想检查打印的元素数量(3 和 9),而不是它们的值。

【讨论】:

  • 非常感谢您的回答!我以为我必须使用 arr[i] 因为我试图打印数组元素 lmaooooo 我已经将它们都更改为 i 和 j 但现在第二部分没有打印...
【解决方案3】:

如果您想使用 for 循环来打印数组的元素,您有两种选择。您可以使用带有循环计数器的传统 for 循环,例如 i。如果您想迭代部分范围,这通常是首选。您通常将循环计数器与最后一个索引进行比较。另一方面,如果您要遍历整个事物,更方便的选择是使用基于范围的 for 循环。您可以在此处查看这两个示例:

#include <iostream>

int main() {
  int arr[9] = {10, 20, 30};

  std::cout << "The original array elements are :\n";

  // Traditional for-loop
  for (int i = 0; i <= 3; ++i) {
    std::cout << arr[i] << '\n';
  }

  arr[3] = {40};
  arr[4] = {50};
  arr[5] = {60};
  arr[6] = {70};
  arr[7] = {80};
  arr[8] = {90};

  std::cout << "After append values to the end of the array :\n";

  // Range-based for loop
  for (auto const elm : arr) {
    std::cout << elm << '\n';
  }
}

详细了解 for 循环 here

【讨论】:

  • 这可能是一个愚蠢的问题,我希望你不介意我再问一个问题。我意识到每个人都将大括号放在循环表达式括号旁边,而不是将大括号放在下一行。它就像一个绝对的法律或什么?因为我觉得把它放在下一行看起来更干净。很抱歉问了一个奇怪的问题,但自从我开始编码以来,我一直在考虑这个问题。非常感谢您的回答!
  • 你的问题没问题,不用抱歉。无论哪种方式,你都可以做到。无论如何都没有关系。不要太在意,这是风格问题。选择一个并继续前进。保持一致更重要;无论您遵循哪种风格,都要保持一致。
  • 对,好点。非常感谢您回答我的问题。我刚刚阅读完您附加的链接,它确实让我对 for 循环有了更多的了解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 2018-03-16
  • 1970-01-01
  • 2014-03-18
  • 2021-01-18
  • 1970-01-01
相关资源
最近更新 更多