这就是问题:编写一个读取二次方程系数的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'的未定义引用
collect2:错误: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 * a左右取出了parantesis,则输出为-0和0的系数值。
答案 0 :(得分:3)
您需要链接数学库,例如
gcc -o myprog myprog.c -lm
答案 1 :(得分: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