这个是可以根据判别式来选择是求实数根还是虚根的程序:
#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);
}