刚学C,为什么我输入负数的时候计算结果不对呢,算出来的数特别大,输入正数就很正常,把float改成double也不行。。

    float a;
float b;
float c;
float x1;
float x2;
float delta;
float p;
float q;


printf("请输入a、b、c的值:");
scanf_s("%f,%f,%f", &a, &b, &c);

delta= b * b - 4 * a * c;
p = -b / (2 * a);
q = sqrt(delta) / (2 * a);


if (delta < 0)
{
    printf("此方程无解");
}
else
{

    x1 = p + q;
    x2 = p - q;
    printf("此方程的解为x1 = %f, x2 = %f\n", x1, x2);

}

问题已解决,是VS编译器中scanf_s函数的问题,和scanf的输入形式不太一样
解决方法:在文件首行加上_CRT_SECURE_NO_WARNINGS之后,将scanf_s改为scanf即可正常输出。

请务必关注sqrt函数的使用,以及其对负数的处理和返回结果