【问题标题】:How to create an array to scale from 0 until user input如何创建一个数组以从 0 缩放直到用户输入
【发布时间】:2019-02-20 04:50:39
【问题描述】:

我正在尝试创建一个根据用户输入打印出数组的程序。该数组需要从 0 开始并缩放到用户输入的数字。因此,如果用户输入 5,则数组值为 [0][1][2][3][4][5]。出于某种原因,我的代码只打印出 0。

#include <iostream>
using namespace std;

int main() {
cout << "Enter the value of n: ";
int n;
cin >> n;
int *arr1 = new int[n];

for(int i = 0; i < n; i ++){
    arr1[i] = 0;

}
cout << *arr1 << endl;

delete [] arr1;
return 0;
}

【问题讨论】:

  • arr1[i] = 0; ...您将数组中的每个值都设置为零
  • 每当您想到“动态数组”时,您的下一个想法几乎应该总是std::vector
  • 至于你的问题,也许一些rubber duck debugging 会帮助你了解发生了什么?
  • 改用arr1[i] = i
  • 哦,*arr1 等于 arr1[0]

标签: c++


【解决方案1】:

您的代码中几乎没有错误。

当 n = 5 时,您希望输出为 [0][1][2][3][4][5]。因此您的输出有 (n + 1) 个元素.所以你的数组也应该有 (n + 1) 个元素。

int *arr1 = new int[n + 1];

在您的代码中,您将 0 分配给数组中的每个元素。但是您希望数组包含 0, 1, 2, .., n

for(int i = 0; i < n + 1; i++){
  arr1[i] = i;
}

在您的代码中,您只打印第一个元素。 *arr1 与 arr1[0] 相同。因此,需要另一个 for 循环来打印数组中的每个元素。

for(int i = 0; i < n + 1; i++){
  cout << "[" << arr1[i] << "]" << endl;
}

那么当n = 5时你会得到输出[0][1][2][3][4][5]

【讨论】:

  • 您做了哪些更改?他们为什么要解决 OP 的问题?请不要鼓励货物崇拜编程。
  • @Someprogrammerdude 我已经改进了答案,以便更好地反映原始代码中的问题。
猜你喜欢
  • 2018-09-09
  • 2014-11-06
  • 2023-01-12
  • 2017-11-30
  • 1970-01-01
  • 2016-01-10
  • 2016-01-28
  • 1970-01-01
  • 2013-07-18
相关资源
最近更新 更多