Ragazzi mi spiegate perché questo programma risulta corretto, ma non parte?

codice:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    int a, b, c;
    float det, x1, x2;

    printf("Inserire il valore di a, b e c:\n");
    scanf("%d%d%d", &a, &b, &c);

{
   if (a != 0)
    {
        if (b != 0)
        {
            if (c != 0)
            {
                det = sqrt(b * b - 4 * a * c);

                 if (det > 0)
                 {
                     x1 = (-b + det) / 2 * a;

                     x2 = (-b - det) / 2 * a;

                     printf("L'equazione ammette due soluzioni reali e distinte: %f - %f", x1, x2);
                 }

                 if (det < 0)
                 {
                     printf("L'equazione non ammette soluzioni reali");
                 }

                 if (det == 0)
                 {
                     x1 = x2 = (-b + det) / 2 * a;
                     printf("L'equazione ammette un'unica soluzione: %f", x1);
                 }
            }
            else
            {
                x1 = 0;

                x2 = - b / a;

                printf("L'equazione ammette due soluzioni reali e distinte: %f - %f", x1, x2);
            }

        }
        else
        {
            if (c == 0)
                printf("L'equazione ammette un'unica soluzione: \nx=0");

            else
            {
                if (a * c >0)
                {
                    x1 = + sqrt(-c / a);
                    x2 = - sqrt(-c / a);
                    printf("L'equazione ammette due soluzioni reali e distinte: %f - %f", x1, x2);
                }
                else
                    printf("L'equazione risulta essere impossibile");
            }
        }
    }
    else
   {
       if (b != 0)
       {
           if (c != 0)
           {
               x1 = -c / b;
               printf("L'equazione e' di primo grado.\n La soluzione e': %f", x1);
           }
           else
            printf("L'equazione e' di primo grado.\n La soluzione e' x=0");
       }
       else
       {
           if (c == 0)
            printf("L'equazione e' un'identita'. La soluzione e' x=0");

           else
            printf("L'equazione e' impossibile");
       }

   }
}
    return 0;
}