C语言程序设计求方程的解:求ax2+bx+c=0方程的实根
C语言程序设计求方程的解:求ax2+bx+c=0方程的实根。a,b,c由键盘输入.输入三个数a,b,c;输出方程的实根,如果方程有实根,则输出根;如果方程有2个不等实根,...
C语言程序设计求方程的解:求ax2+bx+c=0方程的实根。a,b,c由键盘输入.
输入三个数a,b,c;输出方程的实根,如果方程有实根,则输出根;如果方程有2个不等实根,则分2行输出,第一行输出较大根,第二行输出较小根。
其余情况(如无实根等)则输出No
/*
求方程的解
*/
#include<stdio.h>
#include<math.h>
int main(void)
{
float a=0;
float b=0;
float c=0;
float d=0;
float x1,x2;
scanf("%f%f%f",&a,&b,&c);
d=b*b-4*a*c;
if(d>0){
d=sqrt(d);
b=-b;
x1=(b+d)/(2*a);
x2=(b-d)/(2*a);
if(x1>x2){
printf("%f\n%f",x1,x2);
}
else printf("%f",x1);
}
else printf("No");
return 0;
}
这是我写的,为什么错了? 展开
输入三个数a,b,c;输出方程的实根,如果方程有实根,则输出根;如果方程有2个不等实根,则分2行输出,第一行输出较大根,第二行输出较小根。
其余情况(如无实根等)则输出No
/*
求方程的解
*/
#include<stdio.h>
#include<math.h>
int main(void)
{
float a=0;
float b=0;
float c=0;
float d=0;
float x1,x2;
scanf("%f%f%f",&a,&b,&c);
d=b*b-4*a*c;
if(d>0){
d=sqrt(d);
b=-b;
x1=(b+d)/(2*a);
x2=(b-d)/(2*a);
if(x1>x2){
printf("%f\n%f",x1,x2);
}
else printf("%f",x1);
}
else printf("No");
return 0;
}
这是我写的,为什么错了? 展开
6个回答
展开全部
你的问题是当d>0时,顺程序看下去自然就有x1>x2,所以if中的嵌套if没有起作用,也就是d=0你就直接归为输出no了,下面是我在你的程序基础上改的,删去了一些较繁琐的地方,程序相当简便,即使你用不到也可能对后来人有帮助。
#include<stdio.h>
#include<math.h>
void main()
{
float a,b,c,d;
float x1,x2;
printf("please input 3 numbers:\n");
scanf("%f%f%f",&a,&b,&c);
d=b*b-4*a*c;
if(d>0)
{
d=sqrt(d);
x1=(-b+d)/(2*a);
x2=(-b-d)/(2*a);
printf("%.2f\n%.2f\n",x1,x2);
}
else if ((int)d==0)
{
x1=-b/(2*a);
printf("%.2f\n",x1);
}
else printf("No");
}
#include<stdio.h>
#include<math.h>
void main()
{
float a,b,c,d;
float x1,x2;
printf("please input 3 numbers:\n");
scanf("%f%f%f",&a,&b,&c);
d=b*b-4*a*c;
if(d>0)
{
d=sqrt(d);
x1=(-b+d)/(2*a);
x2=(-b-d)/(2*a);
printf("%.2f\n%.2f\n",x1,x2);
}
else if ((int)d==0)
{
x1=-b/(2*a);
printf("%.2f\n",x1);
}
else printf("No");
}
展开全部
总结上面两位的说法:
#include
#include
void
main()
{
float
a,b,c,d,x1,x2;
(1)//////////////////////////////d=b*b-4*a*c;
printf("please
enter
3
numbers.\n");
(2)/////////////////////////////scanf("%f,%f,%f",a,b,c);
scanf("%f,%f,%f",&a,&b,&c);
d=b*b-4*a*c;
x1=(-b+sqrt(d))/(double)(2*a);
//vc为确保精度,默认的都是double类型。
x2=(-b-sqrt(d))/(double)(2*a);
if(d<0)
printf("该方程无实数解.");
else
if(d=0)
printf("x1=%f.",x1);
else
printf("x1=%f.\nx2=%f\n",x1,x2);
}
我用vc6.0,可以运行。不知道对否,楼主再看看。
#include
#include
void
main()
{
float
a,b,c,d,x1,x2;
(1)//////////////////////////////d=b*b-4*a*c;
printf("please
enter
3
numbers.\n");
(2)/////////////////////////////scanf("%f,%f,%f",a,b,c);
scanf("%f,%f,%f",&a,&b,&c);
d=b*b-4*a*c;
x1=(-b+sqrt(d))/(double)(2*a);
//vc为确保精度,默认的都是double类型。
x2=(-b-sqrt(d))/(double)(2*a);
if(d<0)
printf("该方程无实数解.");
else
if(d=0)
printf("x1=%f.",x1);
else
printf("x1=%f.\nx2=%f\n",x1,x2);
}
我用vc6.0,可以运行。不知道对否,楼主再看看。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#include<math.h>
void main()
{
double a,b,c,d,e,f;
printf("请依次输入二次方程的三个系数,以逗号隔开,程序将为您求得该方程的解:\n");
scanf("%lf,%lf,%lf",&a,&b,&c);
d=b*b-4*a*c;
e=-b/(2*a);
if (a==0)
if (b==0)
if (c==0) printf("该方程存在无数解\n");
else printf("该方程无解\n");
else printf("该方程有唯一解,为 %.10f \n",-c/b);
else
{
if (d==0) printf("该方程有唯一解,为 %.10f \n",e);
else
if (d>0) {f=sqrt(d)/(2*a);printf("该方程的解为 %.10f 和 %.10f\n",e+f,e-f);}
else {f=sqrt(-d)/(2*a);printf("该方程的解为 %lf+%lf i和 %lf-%lf i\n",e,f,e,f);}
}
}
这是我编的程序,是对的,希望对你有帮助。
#include<math.h>
void main()
{
double a,b,c,d,e,f;
printf("请依次输入二次方程的三个系数,以逗号隔开,程序将为您求得该方程的解:\n");
scanf("%lf,%lf,%lf",&a,&b,&c);
d=b*b-4*a*c;
e=-b/(2*a);
if (a==0)
if (b==0)
if (c==0) printf("该方程存在无数解\n");
else printf("该方程无解\n");
else printf("该方程有唯一解,为 %.10f \n",-c/b);
else
{
if (d==0) printf("该方程有唯一解,为 %.10f \n",e);
else
if (d>0) {f=sqrt(d)/(2*a);printf("该方程的解为 %.10f 和 %.10f\n",e+f,e-f);}
else {f=sqrt(-d)/(2*a);printf("该方程的解为 %lf+%lf i和 %lf-%lf i\n",e,f,e,f);}
}
}
这是我编的程序,是对的,希望对你有帮助。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int main(void)
{
float a=0;
float b=0;
float c=0;
float d=0;
float x1,x2;
scanf("%f%f%f",&a,&b,&c);
d=b*b-4*a*c;
if(d>0) ///////////////这个地方,应该是 d>=0
{
d=sqrt(d);
b=-b;
x1=(b+d)/(2*a);
x2=(b-d)/(2*a);
if(x1>x2)
{
printf("%f\n%f",x1,x2);
}
else
printf("%f",x1);
}
else printf("No");
return 0;
}
{
float a=0;
float b=0;
float c=0;
float d=0;
float x1,x2;
scanf("%f%f%f",&a,&b,&c);
d=b*b-4*a*c;
if(d>0) ///////////////这个地方,应该是 d>=0
{
d=sqrt(d);
b=-b;
x1=(b+d)/(2*a);
x2=(b-d)/(2*a);
if(x1>x2)
{
printf("%f\n%f",x1,x2);
}
else
printf("%f",x1);
}
else printf("No");
return 0;
}
更多追问追答
追问
额..不好意思.还是不对
追答
你说的不对是什么不对,为何在我的电脑哦上是对的
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
试试这个,这题目我做过!!
#include<stdio.h>
#include<math.h>
int main()
{
float a,b,c,x1,x2,d;
scanf("%f%f%f",&a,&b,&c);
if(a!=0)
{
d=sqrt(b*b-4*a*c);
x1=(-b+d)/(2*a);
x2=(-b-d)/(2*a);
if(x1<x2)printf("%0.2f %0.2f\n",x2,x1);//大的在前面
else
printf("%0.2f %0.2f\n",x1,x2);
}
return 0;
}
#include<stdio.h>
#include<math.h>
int main()
{
float a,b,c,x1,x2,d;
scanf("%f%f%f",&a,&b,&c);
if(a!=0)
{
d=sqrt(b*b-4*a*c);
x1=(-b+d)/(2*a);
x2=(-b-d)/(2*a);
if(x1<x2)printf("%0.2f %0.2f\n",x2,x1);//大的在前面
else
printf("%0.2f %0.2f\n",x1,x2);
}
return 0;
}
追问
不用写b=0和a=0这样的情况吗
追答
不用的,题目叫我们求的是一元二次方程,只用考虑这点就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询