鱼C论坛

 找回密码
 立即注册
查看: 4014|回复: 10

求算术值,哪里错了

[复制链接]
发表于 2013-10-2 20:26:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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的呀
QQ截图20131002202628.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-2 20:30:20 | 显示全部楼层
disc = b*b-4*a*c;
disc是负值。。。
求根公式不是有条件的么。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-2 20:32:08 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-2 20:37:21 | 显示全部楼层
liufei_vip 发表于 2013-10-2 20:30
disc = b*b-4*a*c;
disc是负值。。。
求根公式不是有条件的么。。。

p=-5.0/(2*4.0)
p=-0.625
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-2 21:11:07 | 显示全部楼层
乄ヤ灬风 发表于 2013-10-2 20:32
不懂你指的什么,我说p值,

小同学,负数开放你学过么。。。
求根公式的条件是什么你知道么。。。
不懂你就查啊,,,
都告诉你关键字了你还问。。。
直接给你答案你要么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-2 21:28:03 | 显示全部楼层
liufei_vip 发表于 2013-10-2 21:11
小同学,负数开放你学过么。。。
求根公式的条件是什么你知道么。。。
不懂你就查啊,,,

disc = b*b-4*a*c;
disc开方值也不是负数,sqrt(disc)/(2*a)应该等于正数;
p这下是结果正确了, q怎么错了,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-2 22:16:14 | 显示全部楼层
不懂哇,我是菜鸟
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-3 11:46:43 | 显示全部楼层
乄ヤ灬风 发表于 2013-10-2 21:28
disc = b*b-4*a*c;
disc开方值也不是负数,sqrt(disc)/(2*a)应该等于正数;
p这下是结果正确了, q怎么错 ...

4,5,6的情况下方程无根
这时候disc<0,怎么能开方?
先判断下disc的正负后再作相关计算,再看那时候p-q是否有问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-3 14:16:02 | 显示全部楼层
tsembrace 发表于 2013-10-3 11:46
4,5,6的情况下方程无根
这时候disc

没错啊!这位仁兄分析的到位,再看不懂,就是你数学没学好了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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);
}

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 05:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表