C程序sqrt不工作

时间:2013-10-24 15:48:50

标签: c

我也输入include<math.h>但它仍然无效。人们说要进入-Im但我是新手,我在哪里放-Im以及如何解决这个问题。

 #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;
}

2 个答案:

答案 0 :(得分: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);
    }

答案 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