[英]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.