科室会i 发表于 2020-2-6 21:44:16

为啥我的是这样的

编了一个求一元二次方程的代码
但每次运行出来的都是这个东西,经常运行别的的东西时候也会这样,求大佬帮忙;
代码:      
      double a,b,c,disc,x1,x2,p,q;
        scanf("%f,%f,%f",&a,&b,&c);
        disc=b*b-4*a*c;
        p=-b/(2*a);
        q=sqrt(disc)/(2*a);
        x1=p+q;
        x2=p-q;
        printf("\nx1=%5.2f\nx2=%5.2f\n",x1,x2);

输入:
         3.0,4.0,5.0

输出:
      x1=-1.#J
      x2=-1.#J

大裤衩子 发表于 2020-2-7 12:58:42

怎么连主函数都没没有{:10_266:}

大裤衩子 发表于 2020-2-7 13:40:35

我按照你的思路写了下,你可以参考下{:10_327:}

召唤风云 发表于 2020-2-7 13:56:46

你的输入有问题。你自己在纸上写一下你的结果。其实这个方程没有解。你换一个有解的输入就可以了。

君逸逍 发表于 2020-2-7 14:28:25

file:///C:/Users/%E7%82%BD%E7%BF%BC/Desktop/%5BRFCG%7D%5D9FC%7BL~A0A_H[%252M5.png
把double改成float
还要math.h头文件

君逸逍 发表于 2020-2-7 14:29:42

#include<stdio.h>
#include<math.h>
int main()
{
        float a,b,c,disc,x1,x2,p,q;
      scanf("%f,%f,%f",&a,&b,&c);
      disc=b*b-4*a*c;
      p=-b/(2*a);
      q=sqrt(disc)/(2*a);
      x1=p+q;
      x2=p-q;
      printf("\nx1=%5.2f\nx2=%5.2f\n",x1,x2);
        return 0;
}
怎么发图片呀{:10_249:}

君逸逍 发表于 2020-2-7 14:32:05

double对应的scanf里的输入类型应该是%lf,

召唤师 发表于 2020-4-1 10:03:56

scanf中%f和%f之间有“,”

lovely539351 发表于 2020-4-1 20:38:27

本帖最后由 lovely539351 于 2020-4-1 20:39 编辑

scanf("%lf,%lf,%lf",&a, &b, &c);
你输入的时候也要3,4,5这么输入不然输入不正确
你加一个if判断一下disc是大于零还是小于零来判断方程有没有解
页: [1]
查看完整版本: 为啥我的是这样的