C语言实验——一元二次方程Ⅰ
时间: 1ms 内存:64M
描述:
解一元二次方程ax2+bx+c=0的解。
输入:
a,b,c的值。
输出:
两个根X1和X2,其中X1>=X2。
结果保留两位小数。
示例输入:
1 5 -2
示例输出:
0.37 -5.37
提示:
参考答案(内存最优[760]):
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c,x,y;
double X1,X2,z;
scanf("%d%d%d",&a,&b,&c);
x=b*b-4*a*c;
z=sqrt(x);
X1=(-b+z)/(a*2);
X2=(-b-z)/(a*2);
printf("%.2f %.2f",X1,X2);
return 0;
}
参考答案(时间最优[0]):
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
float a,b,c,x1,x2,disc,p,q;
cin>>a>>b>>c;
disc=b*b-4*a*c;
if(disc>0)
{x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
cout<<setiosflags(ios::fixed)<<setprecision(2);
cout<<x1<<" "<<x2<<endl;
}
if(disc==0)
{x1=x2=(-b)/(2*a);
cout<<setiosflags(ios::fixed)<<setprecision(2);
cout<<x1<<" "<<x2<<endl;
}
if(disc<0)
{p=(-b)/(2*a);
q=sqrt(-disc)/(2*a);
cout<<setiosflags(ios::fixed)<<setprecision(2);
cout<<p<<"+"<<q<<"i"<<" "<<p<<"-"<<q<<"i"<<endl;
}
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。