过默 发表于 2013-10-2 20:26:46

求算术值,哪里错了



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

void main()
{
double a, b, c, disc, x1, x2,p, q;

scanf("a=%lf,b=%lf,c=%lf", &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("\np=%5.2lf", p);
printf("\nq=%5.2lf", q);
printf("\nx1=%5.2lf", x1);
printf("\nx2=%5.2lf\n", x2);
}
怎么出现p=-0.5呢,应该p=-0.6的呀

liufei_vip 发表于 2013-10-2 20:30:20

disc = b*b-4*a*c;
disc是负值。。。
求根公式不是有条件的么。。。

过默 发表于 2013-10-2 20:32:08

liufei_vip 发表于 2013-10-2 20:30 static/image/common/back.gif
disc = b*b-4*a*c;
disc是负值。。。
求根公式不是有条件的么。。。

不懂你指的什么,我说p值,

过默 发表于 2013-10-2 20:37:21

liufei_vip 发表于 2013-10-2 20:30 static/image/common/back.gif
disc = b*b-4*a*c;
disc是负值。。。
求根公式不是有条件的么。。。

p=-5.0/(2*4.0)
p=-0.625

牡丹花下死做鬼 发表于 2013-10-2 20:40:33

看不懂你的程序到底想干嘛 找到点问题#include <stdio.h>
#include <math.h>

void main()
{
        double a, b, c, disc, x1, x2,p, q;
       
        //scanf("a=%lf,b=%lf,c=%lf", &a, &b, &c);
        scanf("%lf,%lf,%lf", &a, &b, &c);//scanf() 非输入控制符必须照样输入的
        disc = b*b-4*a*c;
        p = -b/(2*a);//p是负数
        q = sqrt(disc)/(2*a);//sqrt(disc)肯定会出问题负数无法开方
        x1 = p + q;
        x2 = p - q;
        printf("\np=%5.2lf", p);
        printf("\nq=%5.2lf", q);
        printf("\nx1=%5.2lf", x1);
        printf("\nx2=%5.2lf\n", x2);
}

liufei_vip 发表于 2013-10-2 21:11:07

乄ヤ灬风 发表于 2013-10-2 20:32 static/image/common/back.gif
不懂你指的什么,我说p值,

小同学,负数开放你学过么。。。
求根公式的条件是什么你知道么。。。
不懂你就查啊,,,
都告诉你关键字了你还问。。。
直接给你答案你要么?

过默 发表于 2013-10-2 21:28:03

liufei_vip 发表于 2013-10-2 21:11 static/image/common/back.gif
小同学,负数开放你学过么。。。
求根公式的条件是什么你知道么。。。
不懂你就查啊,,,


disc = b*b-4*a*c;
disc开方值也不是负数,sqrt(disc)/(2*a)应该等于正数;
p这下是结果正确了, q怎么错了,

御风 发表于 2013-10-2 22:16:14

不懂哇,我是菜鸟

tsembrace 发表于 2013-10-3 11:46:43

乄ヤ灬风 发表于 2013-10-2 21:28 static/image/common/back.gif
disc = b*b-4*a*c;
disc开方值也不是负数,sqrt(disc)/(2*a)应该等于正数;
p这下是结果正确了, q怎么错 ...

4,5,6的情况下方程无根
这时候disc<0,怎么能开方?
先判断下disc的正负后再作相关计算,再看那时候p-q是否有问题。

shiwobuhaoma 发表于 2013-10-3 14:16:02

tsembrace 发表于 2013-10-3 11:46 static/image/common/back.gif
4,5,6的情况下方程无根
这时候disc

没错啊!这位仁兄分析的到位,再看不懂,就是你数学没学好了。

shiwobuhaoma 发表于 2013-10-3 14:20:39

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

void main()
{
double a, b, c, disc, x1, x2,p, q;

scanf("a=%lf,b=%lf,c=%lf", &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("\np=%5.2lf", p);
if(disc<0)
{printf("\nq不存在");}
else
{printf("\nq=%5.2lf", q);
printf("\nx1=%5.2lf", x1);
printf("\nx2=%5.2lf\n", x2);
}

}
页: [1]
查看完整版本: 求算术值,哪里错了