
关于C语言 求一元二次方程ax2+bx+c=0的解 用选择结构
关于C语言求一元二次方程ax2+bx+c=0的解用选择结构普通的结构我会了我需要选择结构用IF来编写...
关于C语言 求一元二次方程ax2+bx+c=0的解 用选择结构 普通的结构我会了 我需要选择结构 用IF 来编写
展开
1个回答
2013-05-18
展开全部
#include<stdio.h>
#include<math.h>
float x1,x2,disc,realpart,imagpart;//全局变量
float great_than_zero(float a,float b)//disc>0时的函数
{
x1=(float)(-b+sqrt(disc))/(2*a);//(v6默认是double型),强制类型转换使数类型据统一
x2=(float)(-b-sqrt(disc))/(2*a);
return(0);
}
float equal_to_zero(float a,float b)//disc=0时的函数
{
x1=x2=-b/(2*a);
return(0);
}float smaller_than_zero(float a,float b)//disc<0时的函数
{
realpart=-b/(2*a);//复根的实部
imagpart=(float)sqrt(-disc)/(2*a);//复根的虚部
return(0);
}int main()
{
float a,b,c;
int flag=1;
while(flag)
{
printf("input a,b,c:");
scanf("%f%f%f",&a,&b,&c);
printf("The equation:");
if(fabs(a)<=1e-6)
printf("is not a quadratic.input date again!\n"); else
{
printf("%5.2f*x*x+%5.2f*x+%5.2f=0\n",a,b,c);
printf("root:");
disc=b*b-4*a*c;
if(disc>0)
{
great_than_zero(a,b);
printf("has distinct real roots:x1=%5.2f\tx2=%5.2f\n",x1,x2);
}
else if(fabs(disc)<=1e-6)
{
equal_to_zero(a,b);
printf("has two equal roots:x1=x2=%5.2f\n",x1,x2);
}
else
{
smaller_than_zero(a,b);
printf("hascomplex roots:x1=%5.2f+%5.2fi\tx2=%5.2f-%5.2fi\n",realpart,imagpart,realpart,imagpart);
}
flag=0;
}
}
}
运行如下:
#include<math.h>
float x1,x2,disc,realpart,imagpart;//全局变量
float great_than_zero(float a,float b)//disc>0时的函数
{
x1=(float)(-b+sqrt(disc))/(2*a);//(v6默认是double型),强制类型转换使数类型据统一
x2=(float)(-b-sqrt(disc))/(2*a);
return(0);
}
float equal_to_zero(float a,float b)//disc=0时的函数
{
x1=x2=-b/(2*a);
return(0);
}float smaller_than_zero(float a,float b)//disc<0时的函数
{
realpart=-b/(2*a);//复根的实部
imagpart=(float)sqrt(-disc)/(2*a);//复根的虚部
return(0);
}int main()
{
float a,b,c;
int flag=1;
while(flag)
{
printf("input a,b,c:");
scanf("%f%f%f",&a,&b,&c);
printf("The equation:");
if(fabs(a)<=1e-6)
printf("is not a quadratic.input date again!\n"); else
{
printf("%5.2f*x*x+%5.2f*x+%5.2f=0\n",a,b,c);
printf("root:");
disc=b*b-4*a*c;
if(disc>0)
{
great_than_zero(a,b);
printf("has distinct real roots:x1=%5.2f\tx2=%5.2f\n",x1,x2);
}
else if(fabs(disc)<=1e-6)
{
equal_to_zero(a,b);
printf("has two equal roots:x1=x2=%5.2f\n",x1,x2);
}
else
{
smaller_than_zero(a,b);
printf("hascomplex roots:x1=%5.2f+%5.2fi\tx2=%5.2f-%5.2fi\n",realpart,imagpart,realpart,imagpart);
}
flag=0;
}
}
}
运行如下:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询