和笔算的结果不同
为什么程序运算出来x1和x2都是-1,后面一串东西看不懂,像是哪里出错了。我笔算出来的结果,x1=-1,x2=-2. 楼主能把文字版的代码发出来了吗,这样瞅不清楚啊,另外,代码想要实现的功能也说下啊。想要笔算下,都看不清{:10_247:}
一元二次方程求解公式
应该是scanf一行有问题吧,直接对abc赋值1 3 2 后结果是没错的。 啥都看不清楚。 TyCk 发表于 2018-7-21 22:10
楼主能把文字版的代码发出来了吗,这样瞅不清楚啊,另外,代码想要实现的功能也说下啊。
想要笔算下,都看 ...
抱歉,我把代码复制过来。这段代码只是一个算法,不知道为啥运算结果不对。#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,disc,x1,x2,p,q;
scanf("%1f%1f%1f",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2.0*a);
q=sqrt(disc)/(2.0*a);
x1=p+q;x2=p-q;
printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);
return 0;
} scanf参数是不是应该为lf,不是1f啊?试一下看看吧。printf的时候,也应该double类型吧。 TyCk 发表于 2018-7-22 10:38
scanf参数是不是应该为lf,不是1f啊?试一下看看吧。printf的时候,也应该double类型吧。
试了一下,结果还是那样 本帖最后由 TyCk 于 2018-7-22 10:50 编辑
我试了下,可以啊。
是不是编译器的问题?
把变量类型都改成float,你试一下? 本帖最后由 TyCk 于 2018-7-22 11:03 编辑
代码这样能测试成功,你用的啥工具编译的代码?
#include<stdio.h>
#include<math.h>
int main() {
double a, b, c, disc, x1, x2, p, q;
scanf("%lf%lf%lf", &a, &b, &c);//这里是英文字母l,(看上去和1差不多啊咋)
disc = b * b - 4 * a * c;
p = -b / (2.0 * a);
q = sqrt(disc) / (2.0 * a);
x1 = p + q;
x2 = p - q;
printf("x1=%7.2f\nx2=%7.2f\n", x1, x2);
getchar();
getchar();
return 0;
} TyCk 发表于 2018-7-22 10:49
我试了下,可以啊。
是不是编译器的问题?
把变量类型都改成float,你试一下?
应该不是吧,换成float可以 TyCk 发表于 2018-7-22 11:00
代码这样能测试成功,你用的啥工具编译的代码?
复制你的代码能用,我的是vs,之前用vc++一直崩,前段时间换成了vs,比vc++稳多了。 低调123456 发表于 2018-7-22 11:48
复制你的代码能用,我的是vs,之前用vc++一直崩,前段时间换成了vs,比vc++稳多了。
那应该就是变量类型和scanf输入时候的问题啦。scanf确实有点小坑,我那段代码主要就改了一个scanf的输入符号。同理,都换成float的类型的话也能用。嗯,可能是变量占的字节数不一样,输入就出问题了。{:10_266:}
页:
[1]