这是一个问题:编写一个读取二次方程系数的C程序,并用两个小数点打印其根。
我的代码:
#include<stdio.h>
#include<math.h>
int main() {
float a,b,c;
float root1;
float root2;
root1=(-b+sqrt(b*b-4*a*c))/2*a;
root2=(-b-sqrt(b*b-4*a*c))/2*a;
scanf("%f %f %f",a,b,c);
printf("%f +f",root1,root2);
return 0;
}
这些是错误:
/tmp/ccYLQQBg.o:在函数main':
hello.c:(.text+0x61): undefined reference to
sqrt'hello.c :(。text + 0xc9)中:未定义引用`sqrt'colle2:error:ld返回1退出状态
我该如何解决这个问题?我的代码有什么问题?谢谢:)新代码:
#include<stdio.h>
#include<math.h>
int main(){
float a,b,c;
float root1=(-b-sqrt(b*b-4*a*c))/(2*a);
float root2=(sqrt(b*b-4*a*c))/(2*a);
scanf("%f %f %f",&a,&b,&c);
printf("%f %f\n",root1,root2);
return 0;
}
但仍有错误。输出总是-nan和nan如果ı取出2 *左右的parantesis,则输出是-0和0的系数值。
输出总是-nan和nan
scanf("%f %f %f",&a,&b,&c);
在代码中放置太晚了。在计算之前获取a,b,c
的值:
#include<stdio.h>
#include<math.h>
int main(void){
float a,b,c;
float root1, root2;
scanf("%f %f %f",&a,&b,&c);
root1 = (-b + sqrt(b*b-4*a*c))/(2*a);
root2 = (-b - sqrt(b*b-4*a*c))/(2*a);
printf("%8.1f %8.1f\n",root1,root2);
return 0;
}
以上公式正常工作:输入:
3 -9 6
输出是:
2.0 1.0
你需要链接数学库,例如
gcc -o myprog myprog.c -lm