2015-03-13 61 views
0

該項目應打印給定數量的除數,作爲輸入,但循環不停止,使我輸入數字而不停止。C項目,爲什麼輸出不出來?

#include<stdio.h> 

int main() 

{ 

    int a,d,cd; 

    printf("Insert a number!\n"); 

    scanf("%d",&a); 

    while(a!=d) 
    { 
     if (a%d==0) cd=cd+1; 

     d=d+1; 
    } 
    printf("The dividers of %d are %d",a,cd); 
} 

謝謝大家,對不起我的英文不好。

+0

我已經撤消了您的上次編輯,因爲它使問題不成問題。 (它看起來像「我有這個代碼:<已經工作的代碼> - 我該如何解決它?」)。如果您不同意這一點,請隨時對其進行評論或編輯。如果你的代碼有另外一個問題,那麼理想情況下應該是一個新問題。 – immibis 2015-03-13 21:51:23

回答

1

考慮這行代碼:

if (a%d==0) cd=cd+1; 

是你應該看到清楚。你試圖除以0(d爲0在第一次迭代)這在你的第一個迭代給出不確定的不作爲輸出比較0.so代碼crashes.hence初始化變量d 1名

編輯:你的變量在初始化時沒有必要得到0,但這就是這種情況。

+1

這是'C'不是java。不能保證d最初爲零。除OP表示代碼保持運行,所以它肯定不會崩潰 – smac89 2015-03-13 21:55:19

+0

不能保證d將爲零,但由於其中有零d導致了問題,這就是op程序沒有得到任何輸出的原因,因爲我有讓代碼運行以檢查我自己。 @ Smac89 – 2015-03-14 06:05:17

+0

@SUMITKUMARSINGHDIXIT非常感謝你,它的工作原理!另外我在這段時間的最後添加了一個「cd = cd + 1」。因爲數字的一個分隔符就是數字本身! 再次感謝您! – 2015-03-14 13:57:13

3

您是否期待dcd的值爲0?他們不。你需要明確地設置它們。

int a; 
int d = 0; 
int cd = 0; 

如果你沒有初始化變量,他們將有隨機垃圾。

+0

另外,讀取未初始化的變量是UB。 – 2015-03-13 18:48:06

+0

感謝您的即時回覆。但它仍然不起作用... – 2015-03-13 18:54:03