我这个输出结果为什么会出现这个,是我程序有问题,还是我输入的值有问题

img

是宏定义的问题,修改如下,供参考:

#include<stdio.h>
#include<math.h>
#define x1(x,y,z) ((y)*(y)-4*(x)*(z))>=0?(-(y)+sqrt((y)*(y)-4*(x)*(z)))/(2*(x)):99
#define x2(x,y,z) ((y)*(y)-4*(x)*(z))>=0?(-(y)-sqrt((y)*(y)-4*(x)*(z)))/(2*(x)):99
int main()
{
    double a,b,c;
    scanf("%lf%lf%lf",&a,&b,&c);
    printf("x1=%f\nx2=%f\n",x1(a,b,c),x2(a,b,c));
    return 0;
}


#include<stdio.h>
#include<math.h>

#define x1(a,b,c) ((-b+sqrt(b*b-4*a*c))/(2*a))
#define x2(a,b,c) ((-b-sqrt(b*b-4*a*c))/(2*a))
int main(){
    double a,b,c;
    scanf("%lf%lf%lf", &a, &b, &c);

    printf("x1=%lf,x2=%lf\n", x1(a, b, c), x2(a, b, c));

    return 0;

}

运行结果:

img