作者Neisseria (Neisseria)
看板C_and_CPP
標題[問題] 數列奇怪的行為
時間Thu Jul 19 22:08:00 2012
開發平台(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