作业帮 > 综合 > 作业

c语言的初级问题在实验一中对一元二次方程ax2+bx+c=0的求解只考虑了b2-4ac〉0的情况.如果考虑a、b、c取值

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/12 01:05:43
c语言的初级问题

在实验一中对一元二次方程ax2+bx+c=0的求解只考虑了b2-4ac〉0的情况.如果考虑a、b、c取值分别如下表,求一元二次方程ax2+bx+2=0的根提示:若b2-4ac>0,方程有两个不同的实根;

 

输入

期待的输出

说明

a

b

c

X1

X2

 

3

5

2

X1=

X2=

b2-4ac>0

2

4

2

X1=X2=-1.000000

b2-4ac=0

3

4

2

X1=-0.666667+0.471405i

X1=-0.666667-0.471405i

b2-4ac<0

3

0

2

X1=

X2=

b=0

0

4

2

X=-0.500000

 

a=0

0

0

2

Input error!

a=0,b=0

若b2-4ac<0,方程有两个复根,其实部和虚部分开计算;

若b2-4ac=0,方程有两个相等的实根;

请分别考虑: a=0、b=0和a、b均为0时的情况.

 C的源程序如下:


c语言的初级问题在实验一中对一元二次方程ax2+bx+c=0的求解只考虑了b2-4ac〉0的情况.如果考虑a、b、c取值
#include <stdio.h>
#include <math.h>
int main(){
    double a,b,c,d,x1,x2,shibu,xubu;
\x09fflush(stdin);
\x09while(scanf("%lf%lf%lf",&a,&b,&c)!=EOF)
\x09{
\x09\x09if(a==0 && b==0 && c!=0)
\x09\x09{
\x09\x09\x09printf("Input error!\n");
\x09\x09\x09fflush(stdin);
\x09\x09\x09continue;
\x09\x09}
\x09\x09if(a==0 && b==0 && c==0)
\x09\x09{
\x09\x09\x09printf("Identities.\n");
\x09\x09\x09fflush(stdin);
\x09\x09\x09continue;
\x09\x09}
\x09\x09if(a==0 && b!=0)
\x09\x09{
\x09\x09\x09printf("X=%lf\n",-c/b);
\x09\x09\x09fflush(stdin);
\x09\x09\x09continue;
\x09\x09}
\x09\x09if(a!=0)
\x09\x09{
\x09\x09\x09d=b*b-4*a*c;
\x09\x09\x09if(d>0)
\x09\x09\x09{
\x09\x09\x09\x09x1=(-b-sqrt(d))/(2*a);
\x09\x09\x09\x09x2=(-b+sqrt(d))/(2*a);
\x09\x09\x09\x09printf("X1=%lf\nX2=%lf\n",x1,x2);
\x09\x09\x09\x09fflush(stdin);
\x09\x09\x09\x09continue;
\x09\x09\x09}
\x09\x09\x09if(d==0)
\x09\x09\x09{
\x09\x09\x09\x09printf("X1=X2=%lf\n",-b/(2*a));
\x09\x09\x09\x09fflush(stdin);
\x09\x09\x09\x09continue;
\x09\x09\x09}
\x09\x09\x09if(d<0)
\x09\x09\x09{
\x09\x09\x09\x09shibu=-b/(2*a);
\x09\x09\x09\x09xubu=sqrt(-d)/(2*a);
\x09\x09\x09\x09printf("X1=%lf+%lfi\nX2=%lf-%lfi\n",shibu,xubu,shibu,xubu);
\x09\x09\x09\x09fflush(stdin);
\x09\x09\x09\x09continue;
\x09\x09\x09}
\x09\x09}
\x09}
\x09return 0;
}