c语言编写一元2次方程。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言编写一元2次方程。相关的知识,希望对你有一定的参考价值。
参考技术A 程序想法没错,但设计的时候有点失误。void
main()
float
a=0,b=0,c=0,d=0,x1=0,x2=0,e=0;/*定义变量*/
printf("axe2+bx+c=0,(a,b,c):\n");/*提示输入3个数*/
scanf("%f,%f,%f",&a,&b,&c);/*输入的时候用float型
*/
e=sqrt(d);/*根号d
*/
x1=(-b+e)/(2*a);/*计算方程,公式有点不点,逻辑*/
x2=(-b-e)/(2*a);/*计算方程*/
printf("\n
positive:\n
x1=%f,\n
negative:\nx2=%f",x1,x2);/*输出x1
x2,输出的时候也要用float型*/
else
printf("equation");/*方程无解*/
getch();
//经修改,可以正常运行,
还有建议下,你就在定义变量的时候不要一大串一起定义类型,
有时候变量的类型是不无法隐型转换的,就会出错。
就像程序里面的,开根号又不一定都开出个整数,大多都是带小数的,就应该定义成float型,
最后的解也会直接化成带小数的,要是你用long(长整型,也是整型的一种),
那小数点后面就将被程序自动省略,那问题可就大了,呵呵,。
还在做为printf输出的时候,要给点提示,不然人家也不知道,这a,b,c是干嘛用的。 参考技术B 这是我做的
#include
#include
void
main()
//主函数
float
a,b,c,delta,x,x1,x2,realpart,imagpart;
//定义a,b,c,delta,x,x1,x2,x3为浮点型
scanf("%f,%f,%f",&a,&b,&c);
//输入二次方程系数a,b,c的值
delta=b*b-4*a*c;
if(fabs(a)>=1e-6)
//以下为if语句
if(fabs(delta)<=1e-6)
printf("此时方程有两相同实根且为%f\n",x=-b/2/a);//delta为0有一根
else
if(delta>1e-6)
x1=(-b+sqrt(delta))/2/a;
x2=(-b-sqrt(delta))/2/a;
printf("x1=%f,x2=%f\n",x1,x2);//delta>0有两实根
else
realpart=-b/(2*a);
imagpart=sqrt(-delta)/(2*a);
printf("has
complex
roots:\n");
printf("%f+%f*i\n",realpart,imagpart);
printf("%f-%f*i\n",realpart,imagpart);//delta<0有两复根
else
if(fabs(b)<=1e-6)
if(fabs(c)<=1e-6)
printf("可输出任意x值\n");
else
printf("此时方程无意义\n");
else
printf("此时方程有一根为%f\n",x=-c/b);
参考技术C 这是我做的
#include<stdio.h>
#include<math.h>
void
main()
//主函数
float
a,b,c,delta,x,x1,x2,realpart,imagpart;
//定义a,b,c,delta,x,x1,x2,x3为浮点型
scanf("%f,%f,%f",&a,&b,&c);
//输入二次方程系数a,b,c的值
delta=b*b-4*a*c;
if(fabs(a)>=1e-6)
//以下为if语句
if(fabs(delta)<=1e-6)
printf("此时方程有两相同实根且为%f\n",x=-b/2/a);//delta为0有一根
else
if(delta>1e-6)
x1=(-b+sqrt(delta))/2/a;
x2=(-b-sqrt(delta))/2/a;
printf("x1=%f,x2=%f\n",x1,x2);//delta>0有两实根
else
realpart=-b/(2*a);
imagpart=sqrt(-delta)/(2*a);
printf("has
complex
roots:\n");
printf("%f+%f*i\n",realpart,imagpart);
printf("%f-%f*i\n",realpart,imagpart);//delta<0有两复根
else
if(fabs(b)<=1e-6)
if(fabs(c)<=1e-6)
printf("可输出任意x值\n");
else
printf("此时方程无意义\n");
else
printf("此时方程有一根为%f\n",x=-c/b);
用C语言编写程序实现一元二次方程的解?
用C语言编写程序实现一元二次方程的解
其中要包含异常的处理,b*b-4*a*c<0时的解
#include <math.h>
void main ()
double sqrt(double x);
int a,b,c;
double x1,x2,x,e,d,g,f;
scanf("%d %d %d",&a,&b,&c);
d=b*b-4*a*c;
if (a==0)
if (b!=0)
x=-(double)c/(double)b;
if (x==0)
x=-x;
printf("x=%.6lf\n",x);
else
printf("x=%.6lf\n",x);
else
printf("Input error!\n");
else if (d<0)
d=-d;
e=sqrt(d);
g=-(double)b/(2*(double)a);
f=e/(2*a);
if (g!=0)
printf("x1=%.6lf+%.6lfi\nx2=%.6lf-%.6lfi\n",g,f,g,f);
else
printf("x1=%.6lfi\nx2=-%.6lfi\n",f,f);
else if (d==0)
x1=x2=-b/(2*a);
printf("x1=x2=%.6lf\n",x1);
else
e=sqrt(d);
x1=(-b+e)/(2*a);
x2=(-b-e)/(2*a);
printf("x1=%.6lf\nx2=%.6lf\n",x1,x2);
这个可以,但也许不够简便 参考技术A #include <math.h>
main()
int z=0;
while(z==0)
float a,b,c,disc,x1,x2;
printf("input a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
disc=b*b-4*a*c;
if(disc>=0)z=1;
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("\nx1=%6.2f x2=%6.2f\n",x1,x2);
我高数学的不好,当b*b-4*a*c<0时的解我不会求~~~~只能让重输.. 参考技术B # include<iostream.h>
# include<math.h>
void main(void)
double a,b,c,x1,x2;
cout<<"input a,b,c:";
cin>>a>>b>>c;
double s=b*b-4*a*c;
if(s>=o)
double sqrtVal=sqrt(s);
x1=(-b+sqrtVal)/(2*a);
x2=(-b-sqrtVal)/(2*a);
cout<<"x1="<<x1<<endl;
cout<<"x2="<<x2<<endl
else
cout<<"this question does not hava a real answer"<<endl;
这个是c++代码希望对你有所帮助!
以上是关于c语言编写一元2次方程。的主要内容,如果未能解决你的问题,请参考以下文章