我是社区的新手,也是编码的新手。现在我正在我的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, 4
和6
作为5
号码,程序将输出该号码首先4669476
然后反向输出数组中的数字。任何人都可以向我解释我做错了什么以及如何解决这个问题?先谢谢你!
PS要温柔!我是这个新手
答案 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;
}