簡體   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