2017-04-27 53 views
-1

我只想要一個程序,用戶輸入a和b的值,並會問如果值a小於b,則用戶重複此過程。 這裏是我的程序:我剛剛開始學習循環在C編程,並試圖創建一個簡單的程序來測試我的知識,但它不會工作


#include <stdio.h> 
#include <math.h> 
int main(void) 
{ 
     int a, b ,c; 

while (a<=b) 
{ 
     printf("Please enter a value for a:\n"); 
     scanf("%d", &a); 
     printf("Please enter a value for b:\n"); 
     scanf("%d", &b); 

     if (a<=b) 
       printf("a must be greater than b:\n"); 
} 
     c=a+b; 
     printf("The answer of c is: %d\n", c); 
return 0; 
} 

我只要一運行程序,它打印:「C的答案是:1829030」 (請注意,最後一個數字始終是隨機的)

請幫我運行這個程序。

回答

0

未初始化的非靜態局部變量的值是不確定的。這意味着該值可以是運行時的任何值。在這種情況下,a,b,c的值是隨機的,並且循環可以或不可以基於a,b,c的隨機值輸入。

嘗試 -

int a = 0, b = 0, c; 
0

您聲明變量a, b, c但你不給他們一個初始值。這意味着他們有一個不確定的價值。 在聲明a and b沒有給出任何值之後,您繼續並在while (a <= b)條件下比較它們。 C不知道如何比較這些無價值變量顯然,所以它完全跳過你的循環。 您可以通過最初給出int a = 0, b = 1值來避免此問題。 這樣你就可以確保循環至少運行一次。

與未初始化的變量會發生什麼事在這個其他SO answer

+0

解釋謝謝! 但是我用程序沒有聲明a和b的值和程序的工作。你能解釋一下當你應該用值來聲明這些嗎? –

+0

請在SO上閱讀其他答案:http://stackoverflow.com/questions/4532871/define-integer-int-whats-the-default-value –

相關問題