2013-10-24 29 views
-6

我也輸入了include<math.h>,但它仍然不起作用。人們正在說要進入 - 我但是我不知道這個位置 - 我該如何解決這個問題。C程序sqrt不工作

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

int main() 
{ 
    float a=0, b=0, c=0, root1=0, root2=0; 

    printf("Enter the value of a,b and c to determine the roots\n"); 
    scanf("%f%f%f",&a,&b,&c); 

    root1=(-b+sqrt(b*b-4*a*c))/(2*a); 
    root1=(-b-sqrt(b*b-4*a*c))/(2*a); 

    printf("The first roots of the quadratic equation are\nFirst root=%.1f\nSecond root=%.1f",root1,root2); 


    return 0; 
} 
+5

如果您告訴我們它「不起作用」,這將有所幫助。你有錯誤嗎?什麼錯誤? –

+3

您應該將第二個根分配給'root2',而不是覆蓋'root1'。你應該檢查輸入是否成功。你應該檢查一下'b * b'是否不小於'4 * a * c'。 –

+3

你可以嘗試像這樣編譯你的程序「gcc prog.c -o prog -lm」 –

回答

0

兩件事:首先複製粘貼的「root1」兩次,這樣您將失去「加號」值,root2將爲零。其次,爲他人的利益,這個問題是最有可能在編譯時和谷歌搜索答案有:

http://www.cs.cf.ac.uk/Dave/C/node17.html

而且你應該測試虛值:

if(b*b-4*a*c < 0){ 
     printf("error: complex solution unsupported, see http://en.wikipedia.org/wiki/Square_root\n"); 
     exit(1); 
    } 
0

你有一個複製粘貼錯誤的位置:

root1=(-b+sqrt(b*b-4*a*c))/(2*a); 
root1=(-b-sqrt(b*b-4*a*c))/(2*a); 

應該是:

root1=(-b+sqrt(b*b-4*a*c))/(2*a); 
root2=(-b-sqrt(b*b-4*a*c))/(2*a); 

另外,您可能需要鏈接數學庫,例如

$ gcc -Wall foo.c -o foo -lm