2013-05-18 64 views
-2

在C中,如何計算特定元素出現在數組中的次數?然後如何向用戶顯示該計數?如何統計c中的數組中的元素

例如,如果我有一個由{1, 2, 2, 2, 3}組成的數組。我如何編寫一個代碼告訴我2出現3次,然後將其顯示給用戶?

+0

http://rapidpurple.com/blog/tutorials/c-tutorials/programming-in-c -arrays-and-loops/ –

+0

你應該嘗試發佈一些代碼或僞代碼或想法或任何關於你的嘗試。我的建議是寫下你如何自己做(如果你是一臺機器)在紙上。然後看看你是否可以將它翻譯成代碼。你肯定會在翻譯中遇到麻煩,但是你有更多更小更具體的問題需要思考。 – rliu

+0

對陣列中可能出現的值範圍有任何限制嗎?如果它只有小於1000的正值,那麼這是微不足道的 - 只需要計數的第二個數組。如果可能發生任何可能的值,那就不那麼簡單了。 – Bull

回答

0

如果您只想計算所有元素:假設數組只能包含有限範圍的整數,則聲明另一個長度爲第一個數組中最大條目的數組。迭代第一個數組,並通過第一個數組增加第二個數組索引中的位置,然後打印出第二個數組。

僞代碼:

int nums[] = {1,2,2,2,3}; 

int counts[10]; // assume entries in nums are in range 0..9 

for(i = 0; i < length of nums; ++i) 
{ 
    num = nums[i]; 
    if(num < 0 or num >= length of counts) 
     handle this somehow 
    ++counts[num]; 
} 
for(i = 0; i < length of counts; ++i) 
{ 
    printf("%d occurs %d times\n", i, counts[i]); 
} 

如果您只想計算特定值:

int count_in_array(int value, int* array, int length) 
{ 
    int count = 0; 
    int i; 
    for(i = 0; i < length; ++i) 
    { 
     if(array[i] == value) 
      ++count; 
    } 
    return count; 
} 

... 
int nums[] = {1,2,2,2,3}; 
printf("%d occurs %d times\n", 2, count_in_array(2, nums, 5)); 
+0

好的,謝謝 –

+0

'for(i = - ; i BLUEPIXY