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

时间:2016-04-06 23:06:00

标签: c++ arrays loops c++11 for-loop

我是社区的新手,也是编码的新手。现在我正在我的CC上学习计算机科学入门,我们正在学习C ++。无论如何,我必须创建一个程序,询问用户一个数字,它将是数组new_array的大小指示器。程序然后要求用户逐个输入数字,然后反向输出。     #包括     使用namespace 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要温柔!我是这个新手

5 个答案:

答案 0 :(得分:1)

这个循环读出界限:

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

如果您在脑海中跟着i,则会看到您将条目numbers输出到0,而实际上您应该将条目numbers-1输出到{ {1}}。

另一种模式是:

0

或者您可以使用传说中的--> operator

有可能&#34;简单地&#34;从for( int i = numbers; i--; ) 开始,但是您使用的循环模式对于无符号计数器不起作用(因为它们总是numbers - 1)。恕我直言,使用适用于所有类型的模式是个好主意;那么你将来不太可能犯错误。

答案 1 :(得分:0)

在您的展示for loop中,您从i = numbers开始,该0 till size - 1超出了阵列的范围。由于数组从i = numbers - 1开始,因此您需要从>=0一直到<appSettings> <add key="owin:appStartup" vaue="yourproject.startup" /> </appSettings>

答案 2 :(得分:0)

因为您从未定义的array[0], array[1], ... array[numbers-1]开始。

{{1}}已定义。

答案 3 :(得分:0)

在C数组中存储的数字是0而不是1.所以最后一个数字存储在array[4]

因此,当您将其写出来时,您应该开始numbers - 1,而不仅仅是numbers

答案 4 :(得分:0)

因为你从超出范围开始索引,给你垃圾值。

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

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