-6

我也进入了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;
}
4

2 回答 2

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);
    }
于 2013-10-24T16:00:22.440 回答
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
于 2013-10-24T16:00:47.843 回答