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