2013-10-05 52 views
1

我試圖使用for循環遍歷整數數組的元素,並確定該數組中的某個特定元素是否爲等於其他整數。嘗試查找int數組的元素是否等於輸入的數字C

下面是我得到了什麼,它似乎並沒有工作:

int squaresArray[1000]; 
int numberOfSquares = 1000; 
int i = 0; 

for (i; i<=numberOfSquares; i++) 
{ 
    squaresArray[i] = i*i; 
    if (number == squaresArray[i]){ 
     printf("%d is a perfect square\n", number);} 
     break; 
} 

據我所知道的關於循環這應該工作,但它甚至沒有打印時數應相等到數組的某個元素。

回答

3

由於放錯了方括號(即break不在if-聲明的範圍內),您正打破第一次迭代。將其更改爲:

if (number == squaresArray[i]) { 
     printf("%d is a perfect square\n", number); // no closing bracket here 
     break; 
} // <-- 

此外,您的環路條件應該可能爲i < numberOfSquares。畢竟,對於長度爲1000的數組而言,numberOfSquares1000)是一個超出邊界的索引。此外,如果您已在循環的封閉範圍中聲明/初始化i,則不需要循環初始化語句。因此,我們只剩下

int i = 0; 

for (; i < numberOfSquares; i++) 

如果您使用C99及以上的,可以的i範圍限制爲只在循環,這應該是首選:

for (int i = 0; i < numberOfSquares; i++) 
+0

感謝的是,它修復了它。我認爲這只是爲了處理錯位的支架。 – user2850602

+0

@ user2850602很高興能幫到你。不要忘記[接受答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)。 – arshajii

+0

Actuall,「i paulsm4

相關問題