c语言程序问题,求高手解答,为什么没错误但是出不来正常的解

讨论一个方程ax2+bx+c=0考虑这个是不是个方程abc是不是都为零然后讨论有几个解就是b方减4ac下边是我编的程序#include<stdio.h>#include<... 讨论一个方程 ax2+bx+c=0 考虑这个是不是个方程 a b c是不是都为零 然后讨论有几个解 就是b方 减4a c 下边是我编的程序
#include<stdio.h>
#include<math.h>
void main()
{
double a,b,c,dise,x1,x2,p,q;
printf("请输入a,b,c\n");
scanf("a=%lf,b=%lf,c=%lf",&a,&b,&c);
//dise=b*b-4*a*c;
if(a==0)
{
printf("方程的解为x1\n",x1=-b/c);
}
if(a==0&&c==0)
{
printf("这不是方程");
}
if(dise=b*b-4*a*c>0)
{
p=-b/(2*a);
q=sqrt(dise)/(2*a);
x1=p+q;x2=p-q;
printf("方程有存在2个不同的解x1=%5.2f\nx2=%5.2f\n",x1,x2);

}
if(dise=b*b-4*a*c==0 )
{
p=-b/(2*a);
q=sqrt(dise)/(2*a);
x1=p+q;x2=p-q;
printf("方程有存在2个相同的解x1=x2=%5.2f\n",x1);
}
if(dise=b*b-4*a*c<0)
{

printf("方程不存在解");
}
}

运行不出结果 我觉得是因为 一开始 你输出a=0,然后虽然第一个if成立了 但是还是算b方减4ac了 还是输出了2个值 有哪个高手能方我做出个完美的程序 求解答
展开
 我来答
WSN石家庄业余球王1
2011-03-30 · TA获得超过1235个赞
知道小有建树答主
回答量:880
采纳率:100%
帮助的人:369万
展开全部
把你后面的if都改为else if
最后一个if改为else
Spurpler
2011-03-30 · TA获得超过507个赞
知道答主
回答量:51
采纳率:0%
帮助的人:62.8万
展开全部
#include<stdio.h>
#include<math.h>

void main()
{
double a,b,c,dise,x1,x2,p,q;
printf("请输入a,b,c:");
scanf("%lf %lf %lf",&a,&b,&c);
//dise=b*b-4*a*c;
if(a == 0)
{
if(b == 0)
printf("这不是方程");
if(c == 0 && b != 0)
printf("方程的解为:x=0");
if(c != 0 && b != 0)
printf("方程的解为:x=%5.2f",-c/b);
}
else if(dise=b*b-4*a*c>0)
{
p=-b/(2*a);
q=sqrt(dise)/(2*a);
x1=p+q;x2=p-q;
printf("方程有存在2个不同的解\nx1=%5.2f\nx2=%5.2f\n",x1,x2);

}
else if((dise=b*b-4*a*c)==0 )
{
p=-b/(2*a);
printf("方程有存在2个相同的解x1=x2=%5.2f\n",p);
}
else if(dise=b*b-4*a*c<0)
{
printf("方程不存在解");
}
}
====================
把if改成else if就行了,将这些条件语句放在同一层次,满足任意一个,就跳出该层次的判断
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Youngnupt
2011-03-30 · TA获得超过121个赞
知道答主
回答量:23
采纳率:0%
帮助的人:17.1万
展开全部
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,dise,x1,x2,p,q;
printf("请输入a,b,c\n");
scanf("%lf%lf%lf",&a,&b,&c);
dise=b*b-4*a*c;
if(a==0&&b&&c)
{
printf("方程的解为x1=%lf\n",-b/c);
}
else if(a==0&&b==0)
printf("这不是方程\n");
if(dise&&a)
{
p=-b/(2*a);
q=sqrt(dise)/(2*a);
x1=p+q;
x2=p-q;
if(dise>0)
printf("方程有存在2个不同的解x1=%.2lf\nx2=%.2lf\n",x1,x2);
else if(dise==0 )
printf("方程有存在2个相同的解x1=x2=%5.2f\n",x1);
else
printf("方程不存在解\n");
}
return 0;
}
简化了一下。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ronle
2011-03-30 · TA获得超过536个赞
知道小有建树答主
回答量:499
采纳率:0%
帮助的人:319万
展开全部
#include "stdafx.h"
#include "math.h"

int main(int argc, char* argv[])
{
float a,b,c;
scanf("a=%f b=%f c=%f",&a,&b,&c);
float disc;
disc=b*b-4*a*c;
if(disc>0)
{
printf("x1=%f\n",(-b+sqrt(disc))/(2*a));
printf("x2=%f\n",(-b-sqrt(disc))/(2*a));
}
if(disc==0)
{
printf("x=%f\n",-b/(2*a));
}
if(disc<0)
{
printf("方程式没有实根。\n");
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式