看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) gcc 4 在 cygwin 上 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 簡易的求質數問題, SIZE 設定在 1000 數列的最後一個值 number[ SIZE ],不知為何會遞增 餵入的資料(Input):預期的正確結果(Expected Output): 預期應該是 0 或 1 錯誤結果(Wrong Output): 為增加為 1 2 3 ... 9 週而復始 程式碼(Code):(請善用置底文網頁, 記得排版) #include<stdio.h> #define SIZE 1000 void eratosthenes( int number[], int size ); int main( void ) { int number[ SIZE ]; int i; int counter = 1; printf( "%d\n", number[ SIZE ] ); eratosthenes( number, SIZE ); printf( "%d\n", number[ SIZE ] ); for ( i = 2; i <= SIZE; i++ ) { if ( number[ i ] == 1 ) { printf( "%4d%2d", i, number[SIZE] ); counter++; } if ( counter % 10 == 0 ) { printf( "\n" ); counter = 1; } } return 0; } void eratosthenes( int number[], int size ) { int i; int j; for( i = 0; i <= SIZE; i++ ) number[ i ] = 1; for ( i = 2; i <= size; i++ ) { if ( number[ i ] == 0 ) { continue; } for ( j = 2; i * j <= size; j++ ) { number[ i * j ] = 0; } } } 補充說明(Supplement):※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.58.141.8
VictorTom:int number[SIZE]; => number[]可用index為0~SIZE-1 07/19 22:12
VictorTom:你printf number[SIZE]根本印超過陣列了, 簡易的推斷為 07/19 22:13
VictorTom:剛好印到了是變數i的地方, 所以印出了那樣的結果.... 07/19 22:13
VictorTom:不過也不用想預期超過array大小會變成什麼結果就是XD 07/19 22:14
看來是我笨了 XD,感謝大大的回答 ※ 編輯: Neisseria 來自: 61.58.141.8 (07/19 22:15) ※ 編輯: Neisseria (112.104.128.230), 12/24/2018 06:33:37