当前位置: 代码迷 >> C语言 >> 请问怎么用C语言求一元二次方程的虚根
  详细解决方案

请问怎么用C语言求一元二次方程的虚根

热度:2260   发布时间:2007-05-16 14:07:08.0
请问怎么用C语言求一元二次方程的虚根
请问怎么用C语言求一元二次方程的虚根
搜索更多相关的解决方案: C语言  一元二次方程  

----------------解决方案--------------------------------------------------------

这个只适合做虚根的
#include <stdio.h>
#include <conio.h>
#include <math.h>
void xiaoyu(float a,float b,float c)
{
float q,x,y,m,n;
q=b*b-4*a*c;
m=(-b)/(2*a);
n=(sqrt(-q))/(2*a);
printf("x=%f+%f*i\n",m,n);
printf("y=%f-%f*i\n",m,n);
}
int main()
{
float a,b,c,q;
printf("please input the three number:\n");
scanf("%f%f%f",&a,&b,&c);
q=b*b-4*a*c;
if (q<0)
xiaoyu(a,b,c);
getch();
return 0;
}


----------------解决方案--------------------------------------------------------

谢谢上面楼上对我热心帮助的同学!


----------------解决方案--------------------------------------------------------

这个是可以根据判别式来选择是求实数根还是虚根的程序:
#include <stdio.h>
#include <conio.h>
#include <math.h>

void rel(int x,int y,double q);
void unrel(int x,int y,int z);
void sub(int x,int y);

main()
{
int a,b,c;
double q;
int i;
clrscr();

printf("Input the data:\n");
scanf("%d%d%d",&a,&b,&c);

q=b*b-4*a*c;
printf("%lf\n",q);
getchar();

printf("Choose:\n");
scanf("%d",&i);

switch(i)
{
case 1:rel(a,b,q);break;
case 0:sub(a,b);break;
case -1:unrel(a,b,c);break;
default:printf("Error!\n");break;
}
}

void rel(int x,int y,double p)
{
double x1,x2;

p=sqrt(p);
x1=(-y+p)/(2*x);
x2=(-y-p)/(2*x);

printf("x1=%lf\nx2=%lf",x1,x2);
}

void unrel(int x,int y,int z)
{
double x1,x2;
double t;

t=4*x*z-(y*y);
t=sqrt(t);
x1=(-y+t)/(2*x);
x2=(-y-t)/(2*x);

printf("x1=%lf\nx2=%lf",x1,x2);
}

void sub(int x,int y)
{
int x1;

x1=(-y)/(2*x);
printf("x1=%d",x1);
}


----------------解决方案--------------------------------------------------------
  相关解决方案