簡體   English   中英

所需代碼的說明

[英]Explanation for the code needed

當要求輸入由空格分隔的N個整數時,有人編寫了以下代碼

  do
   {
       cin>>temp;
      name[i]=temp;


       if(i==N-1)
           break;
       i++;


   }while(true);

在這里它被初始化為零。 我想知道為什么這段代碼可以正常工作。 如果我使用N=4 2 34 5 87給出以下輸入,則數組name將正確存儲值。 name[0]=2 name[1]=34 ,依此類推。 如果我在cin語句后寫cout<<"Hello" ,它直到我按return才執行。 基本上我想知道循環是如何工作的。 任何幫助將不勝感激。 謝謝。

這是一個do - while循環,這意味着它至少輸入了一次。 因此,當N == 0時,代碼無法正確處理這種情況。

假設N > 0i初始化為0並且從cin讀取的輸入正確,則循環運行直到break語句。 不論終止條件如何, break都會終止循環。

i == N-1為true時,執行break語句。 這是在name[N-1] = temp之后發生的,這意味着在循環終止時已分配了N項目,因為i在每次迭代中都會遞增i != N-1

缺省情況下, cin將空格視為分隔您的“令牌”或輸入片段。 每次使用cin ,它將給您編號。

現在嘗試這個備受評論的版本。

do {
    /* Read a number */
    cin >> temp;
    /* Save the number into the i'th element of the array name */
    name[i] = temp;

    /* If we have reached the maximum size of the array as given by N, exit the loop. */
    if (i == N-1) {
        break;
    }
    /* If we haven't reached the maximum size, increase i by 1 and keep saving to the array. */
    i++;
} while(true);

該代碼不是很好。 最好將(i < N-1)為while條件,而根本不使用break

另請注意,這只是較大功能的一部分。 如果較大的函數起作用,則必須聲明變量(例如,給N賦值)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM