低调123456 发表于 2018-7-21 15:42:41

和笔算的结果不同

为什么程序运算出来x1和x2都是-1,后面一串东西看不懂,像是哪里出错了。我笔算出来的结果,x1=-1,x2=-2.

TyCk 发表于 2018-7-21 22:10:28

楼主能把文字版的代码发出来了吗,这样瞅不清楚啊,另外,代码想要实现的功能也说下啊。
想要笔算下,都看不清{:10_247:}

万俟小凡 发表于 2018-7-22 01:54:41

一元二次方程求解公式
应该是scanf一行有问题吧,直接对abc赋值1 3 2 后结果是没错的。

威廉王爷 发表于 2018-7-22 06:04:21

啥都看不清楚。

低调123456 发表于 2018-7-22 09:45:06

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;
}

TyCk 发表于 2018-7-22 10:38:37

scanf参数是不是应该为lf,不是1f啊?试一下看看吧。printf的时候,也应该double类型吧。

低调123456 发表于 2018-7-22 10:46:58

TyCk 发表于 2018-7-22 10:38
scanf参数是不是应该为lf,不是1f啊?试一下看看吧。printf的时候,也应该double类型吧。

试了一下,结果还是那样

TyCk 发表于 2018-7-22 10:49:26

本帖最后由 TyCk 于 2018-7-22 10:50 编辑

我试了下,可以啊。
是不是编译器的问题?
把变量类型都改成float,你试一下?

TyCk 发表于 2018-7-22 11:00:43

本帖最后由 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;
}

低调123456 发表于 2018-7-22 11:47:06

TyCk 发表于 2018-7-22 10:49
我试了下,可以啊。
是不是编译器的问题?
把变量类型都改成float,你试一下?

应该不是吧,换成float可以

低调123456 发表于 2018-7-22 11:48:22

TyCk 发表于 2018-7-22 11:00
代码这样能测试成功,你用的啥工具编译的代码?

复制你的代码能用,我的是vs,之前用vc++一直崩,前段时间换成了vs,比vc++稳多了。

TyCk 发表于 2018-7-22 11:55:21

低调123456 发表于 2018-7-22 11:48
复制你的代码能用,我的是vs,之前用vc++一直崩,前段时间换成了vs,比vc++稳多了。

那应该就是变量类型和scanf输入时候的问题啦。scanf确实有点小坑,我那段代码主要就改了一个scanf的输入符号。同理,都换成float的类型的话也能用。嗯,可能是变量占的字节数不一样,输入就出问题了。{:10_266:}
页: [1]
查看完整版本: 和笔算的结果不同