2016-07-14 129 views
-3

問題說明是:C程序在運行時崩潰

當數字是64,253乘以365乘積是23,452,345。請注意, 的前四位數字與最後四位數字(2345和2345)相同。寫一個程序,將 找到任何和所有可以乘以365的整數產生一個八位數的產品,其中 的前四位數字與最後四位數字相同。 在上面的示例中,沒有重複的數字,但是在您的程序中,產品可以有 重複。例如,44,884,488。 (提示:使用MOD)

我寫的代碼是:

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 

int a=10000, b,c; 
// 64253 
while(a<100000){ 

    b = a*365; 
    c = (a*365)%10000; 

    if(c == 0 || b %1000 == c) 
     continue; 

    if(b/c == 10001){ 
     printf("%d \n",a); 
    } 

    ++a; 
} 


return 0; 
} 

我不知道爲什麼它崩潰。你可以幫助朋友嗎?

+3

它在哪裏崩潰,錯誤信息是什麼? – SurvivalMachine

+0

我沒有看到它會崩潰的原因(如果int是32位,沒有溢出),但我懷疑你會得到正確的結果。 –

+0

它說進程返回255(0XFF)。 –

回答

6

(10000*365) % 10000爲0

所以你將:b/0這會導致浮點異常。

編輯:請注意,此示例代碼中引入c == 0檢查之前,此答案在OP編輯之前。

3

c爲零時,您嘗試除以零。

1

正如其他人所述,當a是10000的倍數時,之後除以0。 無論如何,它也許不事給你,但你可以把一個檢查,如:

if(b/10000000<0 || b/10000000>9)continue; 

優化代碼。 (這樣可以消除所有非8位數字)。