c语言 给定一元二次方程的系数a,b,c,求方程的解。用开方函数

如题所述

参考代码如下:
#include<stdio.h>
#include<math.h>
#define EPS 1e-6
int main(void)
{
float a,b,c,p,q,disc;
printf("ax*x+bx+c=0\n");
printf("请输入a b c:");
scanf("%f%f%f",&a,&b,&c);
p=-b/(2*a);
disc=b*b-4*a*c;
q=sqrt(fabs(disc))/(2*a);
if(fabs(a)<=EPS)//解决浮点数相等比较问题
printf("参数错误\n");
else if(fabs(disc)<=EPS)
printf("x1=x2=%.2f\n",p);
else if(disc>0){
printf("x1=%.2f\n",p+q);
printf("x2=%.2f\n",p-q);
} else {
printf("x1=%.2f+%.2fi\n",p,q);
printf("x2=%.2f-%.2fi\n",p,q);
}
return 0;
}追答

追问

兄弟帮我看看为什么

追答

scanf这句要改成这样:
scanf("%lf%lf%lf",&a,&b,&c);
你这东西不成。

写代码只是一个方面吧。。。d为负数时不用管了?a为0时不用管了?这都是中学的知识吧。。。

追问

那兄弟你有没有办法用double开头的写一个,我自己写的我自己都搞不懂了

追答#include<stdio.h>
#include<math.h>
#define EPS 1e-6
int main(void)
{
double a,b,c,p,q,disc;
printf("请输入a b c:\n");
scanf("%lf%lf%lf",&a,&b,&c);
p=-b/(2*a);
disc=b*b-4*a*c;
q=sqrt(fabs(disc))/(2*a);
if(fabs(a)<EPS)//解决浮点数相等比较问题
printf("参数错误\n");
else if(fabs(disc)<EPS)
printf("x1=x2=%.2lf\n",p);
else if(disc>0){
printf("x1=%.2lf\n",p+q);
printf("x2=%.2lf\n",p-q);
} else {
printf("x1=%.2lf+%.2lfi\n",p,q);
printf("x2=%.2lf-%.2lfi\n",p,q);
}
return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答