如何用C语言求一元二次方程的根?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用C语言求一元二次方程的根?相关的知识,希望对你有一定的参考价值。

求检查!!!!!
#include<stdio.h>
#include<math.h>
int main()

int i=1,n;
double a,b,c,x1,x2,q,p,data;
while(i<=n)

scanf("%lf%lf%lf",&a,&b,&c);
data=b*b-4*a*c;
q=(double)(-b)/(2*a);
p=(double)sqrt(data)/(2*a);
if(data>(1e-6))

x1=q+p;
x2=q-p;
printf("x1=%.5lf;x2=%.5lf\n",x1,x2);

else if(data==(1e-6))

x1=x2=q;
printf("x1=%.5lf;x2=%.5lf\n",q,q);

else

p=(double)sqrt(-data)/(2*a);
if(p>=(1e-6))

printf("x1=%.5lf+%.5lfi;x2=%.5lf-%.5lfi\n",q,p,q,p);

else

printf("x1=%.5lf-%.5lfi;x2=%.5lf+%.5lfi\n",q,p,q,p);


i=i+1;

return 0;

#include <stdlib.h>
#include <math.h>
void main( void )

double a,b,c,d;
printf("请输入一元二次方程的三个系数:");
scanf("%lf %lf %lf",&a,&b,&c);
d=b*b-4*a*c;
if(d<0)printf("方程没有实根。\n"); return 1;
if(d==0)printf("方程有重根 x=%lf\n",-b/(2*a)); return 0;
printf("方程有二个实根 x1=%lf x2=%lf",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));
system("pause");
return 0;
参考技术A #include<stdio.h>
#include<math.h>
int main()

int i=1,n=10;
double a,b,c,x1,x2,q,p,data;
while(i<=n)

scanf("%lf%lf%lf",&a,&b,&c);
data=b*b-4*a*c;
q=(double)(-b)/(2*a);
p=(double)sqrt(data)/(2*a);
if(data>(1e-6))

x1=q+p;
x2=q-p;
printf("x1=%.5lf;x2=%.5lf\\n",x1,x2);

else if(fabs(data)<(1e-6))// 这里判断data等于0

x1=x2=q;
printf("x1=%.5lf;x2=%.5lf\\n",q,q);

else
    
p=(double)sqrt(-data)/(2*a);
if(p>=(1e-6))

printf("x1=%.5lf+%.5lfi;x2=%.5lf-%.5lfi\\n",q,p,q,p);

else

printf("x1=%.5lf-%.5lfi;x2=%.5lf+%.5lfi\\n",q,p,q,p);
     

i=i+1;

return 0;

没发现其他的问题,欢迎交流哈。

追问

为什么一定要先判断data小于0?

追答

那个是判断data等于0,不是要先判断data小于0.

追问

不明白,同学,你QQ是几啊?能细聊吗?

追答

从上到下好好看下吧,这个不难懂的。

追问

我的程序没有错,是答案错了,可是我不知道怎么错了,这是题目
描述
利用公式x1 = (-b + sqrt(b*b-4*a*c))/(2*a), x2 = (-b - sqrt(b*b-4*a*c))/(2*a)求一元二次方程ax2 + bx + c =0的根,其中a不等于0。

追答

恩,程序应该是对的,可能是题目的问题。满意请采纳哈。

本回答被提问者采纳
参考技术B #include <stdlib.h>
#include <math.h>
void da(double a,double b,double d);
void xiao();
void deng(double a,double b);

void main()

   double a,b,c,d;
   printf("请输入一元二次方程的三个系数:\\n");
   scanf("%lf %lf %lf",&a,&b,&c);
   d=b*b-4*a*c;
   if(d<0)xiao();
   if(d==0)deng(a,b);
   if(d>0)da(a,b,d);
   system("pause");

void da(double a,double b,double d)
printf("方程有二个实根 x1=%lf  x2=%lf",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));

void xiao()
printf("方程没有实根。\\n"); 

void deng(double a,double b)
printf("方程有重根 x=%lf\\n",-b/(2*a));

用C语言编写求一元二次方程根的程序

条件要判断的充分

用C语言编写求一元二次方程根的程序,条件判断的充分,步骤如下:

void main()

float a,b,c,delta;
scanf("%f%f%f",&a,&b,&c);
if(a!=0)

delta=b*b-4*a*c;
if(delta==0)
printf("x1=x2=%7.2f",-b/(2*a));
else if(delta>0)

printf("x1=%7.2f",(-b+sqrt(delta))/(2*a));
printf("x2=%7.2f",(-b-sqrt(delta))/(2*a));

else

printf("x1=%7.2f+i%7.2f",-b/(2*a),sqrt(-delta)/(2*a));
printf("x2=%7.2f-i%7.2f",-b/(2*a),sqrt(-delta)/(2*a));


else if(b!=0)
printf("x=%7.2f",-c/b);
else if(c==0)
printf("0=0,x为任意解
");
else
printf("%f=0,error!",c);

参考技术A #include <stdio.h>
#include <math.h>
int main()

double a,b,c,disc,x1,x2,realpart,imagpart;
scanf("%lf%lf%lf",&a,&b,&c);
printf("The equation");
if (fabs(a)<=1e-6)
printf(" is not a quadratic\\n");
else

disc=b*b-4*a*c;
if (fabs(disc)<=1e-6)
printf(" has two equal roots:%8.4f\\n",-b/(2*a));
else
if (disc>0)

x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf(" has distinct real roots:%8.4f and %8.4f\\n",x1,x2);

else

realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
printf(" has complex roots:\\n");
printf("%8.4f+%8.4fi\\n",realpart,imagpart);
printf("%8.4f-%8.4fi\\n",realpart,imagpart);


return 0;

参考技术B #include "stdio.h"
#include "math.h"
double x1,x2,p;

float file1(float a,float b)

x1=(-b+sqrt(p))/2*a;
x2=(-b-sqrt(p))/2*a;
return 0;


float file2(float a,float b)

x1=x2=(-b+sqrt(p))/2*a;
return 0;


void main()

float a,b,c;
scanf("%f%f%f",&a,&b,&c);
p=b*b-4*a*c;
printf("方程是:%.3f*x*x+%.3f*x+%.3f=0\n",a,b,c);
if(p>0)

file1(a,b);
printf("X1=%f\tX2=%f\n",x1,x2);

else if(p==0)

file2(a,b);
printf("X1=%f\tX2=%f\n",x1,x2);

else printf("方程无解");


运行正确 输入: 2 3.7 1.2
输出 X1=-1.677625 X2=-5.722375
参考技术C #include<stdio.h>
#include<math.h>
int main(void)

float a,b,c;
double x1,x2;
double delta;
printf("输入a,b,c数值:\n");
scanf("%f%f%f",&a,&b,&c);

if (a!=0)
delta=pow(b,2)-4*a*c;
if(delta==0)

printf("x1=x2=%.2f\n",-b/(2*a));

if(delta>0)

x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
printf("x1=%.2f x2=%.2f\n",x1,x2);

if(delta<0)

printf("无解!\n");


return 0 ;

以上是关于如何用C语言求一元二次方程的根?的主要内容,如果未能解决你的问题,请参考以下文章

如何用二分法求平方根???

求一元二次方程的根c语言

c语言求一元二次方程的根

C语言 求一元二次方程的根 openjudge

C语言编程:求1元2次方程的根

c语言解一元二次方程