主题:[讨论]C语言求助,解一元二次方程的代码,如下,
weixu416
[专家分:0] 发布于 2011-08-02 15:44:00
[code=c]
#include <stdio.h>
#include <math.h>
void main()
{
double a,b,c,d,x1,x2,p,q;
scanf("a=%lf,b=%lf,c=%lf",&a,&b,&c);
d=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(d)/(2*a);
x1=p+q;
x2=p-q;
printf("x1=%5.2f\nx2=%5.2f\n",x1,x2);
}[/code]
无论我打什么数字下去,编译出来的都是 X1=-1 #J ,X2=-1#J
我不知道是在那里出错了
回复列表 (共7个回复)
沙发
nick_hu [专家分:0] 发布于 2011-08-02 18:56:00
sqrt是需要一个非负数作为参数滴~你的d肯能为负数哦~
板凳
wukaikailive [专家分:80] 发布于 2011-08-03 10:05:00
你要先判断d是否为负数,如果是则无解
3 楼
wukaikailive [专家分:80] 发布于 2011-08-03 10:05:00
你要先判断d是否为负数,如果是则无解
4 楼
lxk115 [专家分:10] 发布于 2011-08-03 23:44:00
p=-b/(2*a);
q=sqrt(d)/(2*a); printf("x1=%5.2f\nx2=%5.2f\n",x1,x2);
这里错了!!而且没有必要定义8个变量!!多余了~~7个就行
5 楼
Youip [专家分:0] 发布于 2011-08-05 10:43:00
scanf("a=%lf,b=%lf,c=%lf",&a,&b,&c);
去掉a=,b=,c=能进行一部分计算
scanf("%lf,%lf,%lf",&a,&b,&c);
6 楼
lijiaoyand [专家分:50] 发布于 2011-08-26 17:12:00
解释的通吗,这个我想知道。
SIGNATURE:--------------------------------------
A liar is not believed when he speaks the truth.
[url=http://www.freshoneshoe.com/nike-free-run-2-c-55.html]nike free run 2[/url],[url=http://www.freshoneshoe.com/nike-lunarglide-3-c-50.html]nike lunarglide 3[/url],[url=http://www.freshoneshoe.com/nike-free-run-shoes-c-27.html]nike free run[/url]
7 楼
地上云彩 [专家分:0] 发布于 2011-09-05 17:56:00
额。这个帖子回复不少。跪求解答www.jinxiaoblog.com
我来回复