繁体   English   中英

C ++:使用for循环允许用户将数字输入数组

[英]C++: using for loop to allow user input of numbers into array

我是社区和编码的新手。 现在,我正在我的CC中学习计算机科学入门,我们正在学习C ++。 无论如何,我必须创建一个程序来询问用户一个数字,该数字将成为数组new_array的大小指示器。 然后,程序要求用户一一输入数字,然后再反向输出。 #include使用命名空间std;

int main()
{
cout << "How many numbers?\n";
int numbers; // holds amount of numbers to be entered into array
cin >> numbers;
int new_array[numbers];
for(int counter = 0; counter < numbers; counter++)
{
    cout << "Enter number " << counter << endl;
    cin >> new_array[counter];
}

cout << "You entered: " << endl;

for(int i = numbers; i >= 0 ; i-- )
{
    cout << new_array[i] << endl;

}

return 0;
}

我了解如何执行此操作,并且大多数情况下,我的程序都可以正常工作。 它输出反向输入的数字就好了,但是在此之前,它输出了大而奇怪的数字。 例如,如果用户输入5作为要输入的数字数量,然后分别输入1, 2, 3, 46作为5数字,则程序将首先输出数字4669476 ,然后在数组中输出数字相反。 谁能向我解释我做错了什么以及如何解决? 谢谢高级! PS要温柔! 我是这个新手

此循环超出范围:

for(int i = numbers; i >= 0 ; i-- )
{

如果脑海中紧跟着i ,您将看到输出条目numbers0 ,而实际上您应该输出条目numbers-10

另一种模式是:

for( int i = numbers; i--; )

或者您可以使用寓言-->运算符

可以“简单”地从numbers - 1开始,但是您使用的循环模式不适用于无符号计数器(因为它们始终>= 0 )。 恕我直言,使用适用于所有类型的模式是一个好主意; 那么将来您犯错误的可能性就较小。

在display for loop ,您从i = numbers开始,该i = numbers超出数组的范围。 由于数组从0 till size - 1开始0 till size - 1 ,因此您需要从i = numbers - 1一直到>=0

因为您从未定义的array[numbers]开始。

array[0], array[1], ... array[numbers-1]

在C中,数组从0而不是1开始存储。因此最后一个数字存储在array[4]

所以写出来的时候应该从numbers - 1开始而不是numbers

因为您是从超出范围的索引开始的,所以会给您带来垃圾值。

您的代码应该看起来像这样

 for(int i = numbers-1; i >= 0 ; i-- )
 {
     cout << new_array[i] << endl;
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM