如何创建一个数组以从 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 缩放直到用户输入的主要内容,如果未能解决你的问题,请参考以下文章