c语言求解一元二次方程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言求解一元二次方程相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
#include<math.h>
int main()
int a,b,c,d,x,x1,x2;
scanf("%d%d%d",&a,&b,&c);
d=b*b-4*a*c;
if(a==0)
if(b==0)

printf("Input error!\n");
else
printf("x=%.6f",-c/b);

else

if(d<0)
printf("Input error!\n");
else if(d==0)
printf("x1=x2=%.6f",-b/(2*a));
else

x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%.6f\nx2=%d.6f",x1,x2);





输入为10 20 0 时,
输出为x1=-1.#QNANO
x2=2293400.6f.
不知道哪里错了T T~

参考技术A int main()

int a,b,c,d;
float x1,x2;
scanf("%d%d%d",&a,&b,&c);
d=b*b-4*a*c;
if(a==0)

if(b==0)

printf("Input error!\\n");

else
printf("x=%.6f",-c/b);

else 

if(d<0)
printf("Input error!\\n");
else if(d==0)
printf("x1=x2=%.6f",-b/(2*a));
else
 
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%.6f\\nx2=%.6f\\n",x1,x2);


return 0;

本回答被提问者采纳
参考技术B 您好!
在输出最后的输出语句中你写的是printf("x1=%.6f\nx2=%d.6f",x1,x2);这是错误的
错误1:输出使用了%f表示float类型,而你定义的x1和x2都是int类型的,建议应该把x1,x2都修改成double类型,输出是用%lf。
错误2:%d.6f是什么东西呢?多输入了一个d吧。
建议:不要把情况分得那么细,没必要给自己找麻烦,直接求出判别式,使用公式求解就可以了。
谢谢!望采纳!

C语言编程 解一元二次方程

#include<stdio.h>
#include<math.h>
#define M sqrt(b*b-4*a*c)
main()
int a,b,c,x1,x2;
printf("请输入方程的三个系数:");
scanf("%d,%d,%d",&a,&b,&c);
if (M>0)
x1=(-b+M)/(2*a);
x2=(-b-M)/(2*a);
printf("方程的两个根是:\nx1=%d,x2=%d\n",x1,x2);

else if (M==0)
x1=-b/(2*a);
printf("方程具有两个相等的实根:x1=x2=%d\n",x1);

else
printf("输入错误,请重新输入\n");

输入的时候得到的结果总是不对.请问该怎么改
还是不对啊, 输入系数后,有些明明是没有实根的啊,怎么还是输出有两个相等的实根,是不是判断有什么问题啊,谢谢

M宏不需要开方,delta只是b*b-4*a*c,如果它大于等于0,再开方才有意义.变量也应该使用浮点数类型,修改如下:

//---------------------------------------------------------------------------
#include<stdio.h>
#include<math.h>
#define M (b*b-4*a*c) /*注意这里*/
main()
double a,b,c,x1,x2; /*注意这里*/
printf("请输入方程的三个系数:");
scanf("%lf,%lf,%lf",&a,&b,&c); /*注意这里*/
if (M>0)
x1=(-b+sqrt(M))/(2*a); /*注意这里*/
x2=(-b-sqrt(M))/(2*a); /*注意这里*/
printf("方程的两个根是:\nx1=%lf,x2=%lf\n",x1,x2);/*注意这里*/

else if (M==0)
x1=-b/(2*a);
printf("方程具有两个相等的实根:x1=x2=%lf\n",x1); /*注意这里*/

else
printf("输入错误,请重新输入\n");


//---------------------------------------------------------------------------
参考技术A #include<stdio.h>

main()
int a,b,c,x1,x2,M,n;
printf("请输入方程的三个系数:");
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);n=a*c;
M=b*b-4*n;
printf("%d\n",M);if (M>0)
x1=(-b+M)/(2*a);
x2=(-b-M)/(2*a);
printf("方程的两个根是:\nx1=%d,x2=%d\n",x1,x2);

else if (M==0)
x1=-b/(2*a);
printf("方程具有两个相等的实根:x1=x2=%d\n",x1);

else
printf("输入错误,请重新输入\n");

以上是关于c语言求解一元二次方程的主要内容,如果未能解决你的问题,请参考以下文章

线性方程组求解——C语言程序设计代码,高手们,拜托啦!急急急啊!!!

c++求解一元二次方程

C语言编程 解一元二次方程

用c语言求一个四元二次方程解的个数

C语言用矩阵求解方程组

c语言求一元二次方程的根