[英]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, 4
和6
作为5
数字,则程序将首先输出数字4669476
,然后在数组中输出数字相反。 谁能向我解释我做错了什么以及如何解决? 谢谢高级! PS要温柔! 我是这个新手
此循环超出范围:
for(int i = numbers; i >= 0 ; i-- )
{
如果脑海中紧跟着i
,您将看到输出条目numbers
至0
,而实际上您应该输出条目numbers-1
至0
。
另一种模式是:
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.