·这个程序出了什么错误了?

来源:百度知道 编辑:UC知道 时间:2024/05/23 19:43:00
#include<stdio.h>
#include<math.h>
void main()
{
float a,b ,c,disc,x1,x2,p,q;
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2*a)
if(disc<0)
printf("input error!\n");
else
{
q=sqrt(disc)/(2*a);
x1=p+q;x2=p-q;
printf("x1=%f,x2=%f\n",x1,x2);
}

}
sqrt函数的结果为什么是double型的?

1、p=-b/(2*a) 后面少个;号 。
2、强制类型转换,因为q是float 型的,sqrt函数的结果是double型的。把q=sqrt(disc)/(2*a); 改为q=(float)sqrt(disc)/(2*a); 就可以了。
——sqrt函数是系统已经写好了的函数,在写的时候已经固定了。就好像你自己写的函数一样,你规定它是什么样的返回值下次再调用的时候就是什么返回值!

p=-b/(2*a) 后面少个;号