2017-10-21 40 views
-4

編譯後沒有輸出。似乎不明白這個問題。編譯時也沒有錯誤。按升序排列數組。編譯後沒有輸出。似乎不明白這個問題。?

#include<stdio.h> 
void main(void) 
{ 
    int a[] = {5,4,3,2,1}; 
    int i,j,min,b[5]; 
    min = a[0]; 
    for(i=0;i<sizeof(a);i++) 
    { 
     if(a[i]<min) 
     { 
      j = a[i]; 
      a[i] = min; 
      min = j; 
     } 
     b[i] = min; 
    } 
    for(i=0;i<sizeof(b);i++) 
    { 
     printf("%d,",b[i]); 
    } 
} 
+3

提示:sizeof(b)不是5. – gnasher729

+3

您的排序算法是假的 - 這就是典型的氣泡的樣子。看看[wikipedia](https://en.wikipedia.org/wiki/Bubble_sort)。 'sizeof(a)'在* bytes *中給出數組'a'的大小。爲了得到'a'中的元素數量,你需要用'sizeof a [0]'來劃分它。同樣適用於'sizeof(b)'。 – usr

+0

'void main'是錯誤的。 'main'應該返回'int'。 – melpomene

回答

1

更改此:

sizeof(a) 

這樣:

sizeof(a)/sizeof(a[0]) 

因爲sizeof運營商給出的字節數組a的大小和你的願望元素的數量不限。因此,除以字節數組的元素的大小(數組的所有元素具有相同的大小),這會給出元素的數量。

sizeof(b)相同。


你的算法似乎不太正確。我建議你看看pseudocode of Bubble sort


PS:What should main() return in C and C++?int