求算术值,哪里错了
#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的呀 disc = b*b-4*a*c;
disc是负值。。。
求根公式不是有条件的么。。。 liufei_vip 发表于 2013-10-2 20:30 static/image/common/back.gif
disc = b*b-4*a*c;
disc是负值。。。
求根公式不是有条件的么。。。
不懂你指的什么,我说p值, 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 看不懂你的程序到底想干嘛 找到点问题#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);
} 乄ヤ灬风 发表于 2013-10-2 20:32 static/image/common/back.gif
不懂你指的什么,我说p值,
小同学,负数开放你学过么。。。
求根公式的条件是什么你知道么。。。
不懂你就查啊,,,
都告诉你关键字了你还问。。。
直接给你答案你要么? 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 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是否有问题。 tsembrace 发表于 2013-10-3 11:46 static/image/common/back.gif
4,5,6的情况下方程无根
这时候disc
没错啊!这位仁兄分析的到位,再看不懂,就是你数学没学好了。 #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]