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个值 有哪个高手能方我做出个完美的程序 求解答 展开
#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个值 有哪个高手能方我做出个完美的程序 求解答 展开
展开全部
#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就行了,将这些条件语句放在同一层次,满足任意一个,就跳出该层次的判断
#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就行了,将这些条件语句放在同一层次,满足任意一个,就跳出该层次的判断
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
简化了一下。。。。
#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;
}
简化了一下。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询