2016-01-02 31 views
0

我正從一個scanf輸出讀取多個浮點數。來自鍵盤的多個浮點數輸入

#include<stdio.h> 
#include<math.h> 
int main() 
{ float a,b,c; 
    float d,rot1,rot2; 
    scanf("%f%f%f ", &a, &b, &c); 
    d = sqrt(b*b - 4*a*c); 
    rot1 = (-b-d)/(2*a); 
    rot2 = (-b+d)/(2*a); 
    printf("%f %f", rot1, rot2); 
    return 0; 
} 

它需要4個輸入;但是,我只想爲變量a,b和c的地址只輸入3個輸入。我不知道哪個變量需要額外的輸入。當我爲2個變量編寫輸入代碼時,需要3個輸入。

+0

您需要閱讀[scanf](http://en.cppreference.com/w/c/io/fscanf)的文檔並測試產生的項目數 –

+0

它不等待四個輸入,它正在等待三個,接着是空格; 計爲空白。 – Clifford

+0

@Clifford'scanf(「%f%f%f」...'1)讀取3個FP輸入,2)讀取並拋出空白,然後3)讀取非空白字符。在收到該字符後,它將被放回到stdin中以用於下一個輸入函數。然後'scanf()'返回。當然就像等待4個輸入一樣。 – chux

回答

5
scanf("%f%f%f ", &a, &b, &c); 
      ^

%f後刪除此額外空間。

注意 - 您應該確保sqrt中的表達式不計算爲負數。你可能想要避免這種情況。