如何创建一个数组以从 0 缩放直到用户输入

Posted

技术标签:

【中文标题】如何创建一个数组以从 0 缩放直到用户输入【英文标题】:How to create an array to scale from 0 until user input 【发布时间】: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] 【参考方案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 我已经改进了答案,以便更好地反映原始代码中的问题。

以上是关于如何创建一个数组以从 0 缩放直到用户输入的主要内容,如果未能解决你的问题,请参考以下文章

如何传递运行时参数以从批处理文件启动 exe

输入数组,没有没有数组列表的维度

情境三:程序结构与数组 4循环实训

如何从java控制台获得用户输入?

如何从java控制台获得用户输入?

怎么说用户输入项存在于数组中? [更新]