环境
:win10 vs2103
一元二次方程:ax^2+bx+c=0
自己随机输入数据(即就是自己随机输入a、b、c),计算此方程的解
图解
代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define EXP 0.00000001
int main()
{
double a = 0.0;
double b = 0.0;
double c = 0.0;
scanf("%lf%lf%lf", &a, &b, &c);//double是%1f,float是%f
if ((a > -EXP) && (a < EXP))//a=0.0
{
printf("不是一元二次方程\n");
}
else//a!=0(是一元二次方程)
{
double disc = b*b - 4 * a * c;//注意b的平方不能写为b^2,只能写成b*b
if ((disc>-EXP) && (disc < EXP))//b^2-4*a*c=0
{
printf("%lf\n", (-b) / (2 * a));
}
else
{
if (disc>0.0)//b^2-4*a*c>0
{
printf("%lf\n", ((-b) + sqrt(disc)) / (2 * a)); //double是 % 1f,float是%f
printf("%lf\n", ((-b) - sqrt(disc)) / (2 * a));
}
else
{
printf("无根\n");
}
}
}
system("pause");
return 0;
}
注意:
1.浮点数需要与0作比较的时候,不能直接使用0,而应该是使用精度,例如a需要与0作比较,使用
a>-0.00000001 && a<0.00000001(这样的话a无限接近0,相当于a=0)
2.开平方使用库函数sqrt
3.double一定要记住是%lf(注意f前面不是1)