|
发表于 2020-10-31 00:36:00
|
显示全部楼层
本帖最后由 风过无痕1989 于 2020-10-31 01:26 编辑
不用图片了,你这是求一元二次议程的根,错在这一句: scanf("%lf,%lf,%lf\n",a,b,c);
应该是: scanf("%lf%lf%lf\n",&a,&b,&c); scanf() 函数使用中,除控制符外,最好是不要加任何其他符号,包括空格和逗号,容易出错,后面三个参数应该是取变量的地址,而不是变量本身
还有就是一元二次方程的求解,需要有一个判断的过程,下面给你一个完整的程序:
- #include<stdio.h>
- #include<math.h>
- #define EXP 0.00000001 // 由于精度的原因,float、double类型不能比较大小
- int main()
- {
- double a = 0.0;
- double b = 0.0;
- double c = 0.0;
- double disc,p,q;
- scanf_s("%lf%lf%lf",&a,&b,&c);
- if((a >= -EXP) && (a <= EXP))
- {
- printf("不是一元二次方程\n");
- }
- else
- {
- disc = b * b - 4 * a * c;
- }
-
- p = - b / (2 * a);
- q = sqrt(disc)) / (2 * a);
- if((disc >= - EXP) && (disc <= EXP))
- {
- printf("有两个相同的实根:x = %.2lf\n",p);
- }
- else if(disc > 0.0)
- {
- printf("x1 = %.2lf x2 = %.2lf\n",p + q,p - q);
- }
- else
- {
- printf("有两个共轭的复根: %.2lfi %.2lfi\n",p + q,p - q);
- }
- return 0;
- }
复制代码 |
|