2014-09-23 20 views
0

解決我發現void main是不正確的,但即使我將其更改爲int或刪除它,簡單的等式用C

我沒有得到什麼我應該是X的值給出方程ax + b = 0的A和B的值,我得到的都是零。

我該如何解決這個問題?

void main() 
{ 
    float a,b,x=0; 
    printf("\n Write the values for A and B"); 
    scanf("&%F&%F",&a,&b); 
    if(a==0)printf("\n Not a valid operation"); 
    else{x=-b/a; 
     printf("\n Answer is x=%f",x); 
    } 
} 
+0

'如果(A == 0)'是不是要檢查錯誤的正確方法。如果scanf失敗,那麼'a'將是不確定的,因爲你從未初始化它。此外,它不檢查是否成功讀取了「b」。要解決這個問題,或者事先設置'a = 0',或者檢查'scanf'的返回值。如果讀取了2個項目,它應該是'2'。 – 2014-09-23 04:14:29

回答

1

您使用的格式說明的閱讀ab看起來很奇怪。不知道你是否打算在那裏有&。在http://en.cppreference.com/w/cpp/io/c/fscanf處查看有效格式說明符的詳細信息。

嘗試:

scanf("%f%f",&a,&b); 

&不是一個格式說明。當您使用

scanf("&%F&%F",&a,&b); 

scanf預計該字符的輸入流中&

+0

解決了這個問題(:非常感謝! – MarieC 2014-09-23 04:27:11

+0

不客氣,很高興能幫到你。 – 2014-09-23 04:53:28

0

嘗試

scanf("%f%f",&a,&b); 

,而不是

scanf("&%F&%F",&a,&b);