解一元二次方程可以用求根公式
- 完整代码
//Copyright (c) 2023-2027 // All rights reserved. // // 文件名称:解方程 // 文件标识:见配置管理计划书 // 摘 要:简要描述本文件的内容 // // 当前版本:1.0 // 作 者:王自衡 // 完成日期:2023 年 11 月 4 日 #include<stdio.h> #include<math.h> #define MIN_VALUE 1e-6 int main() { double a, b, c, x1, x2, disc, p, q; printf("请输入一元二次方程的三个系数:a b c\n"); scanf("%lf %lf %lf", &a, &b, &c); printf("一元二次方程的三个系数:a=%f b=%f c=%f\n", a, b, c); if (fabs(a) <= MIN_VALUE) { printf("不是二次方程"); if (fabs(b) <= MIN_VALUE) { if (fabs(c) <= MIN_VALUE) { //无穷解 printf("存在任意解\n"); } else { //无解 printf("无解\n"); } } else { x2 = -c / b; printf("存在一个解:%f\n", x2); } return 0; } disc = b * b - 4 * a * c; p = -b / (2 * a); q = sqrt(disc) / (2 * a); if (fabs(disc) <= MIN_VALUE) { x1 = x2 = p; printf("存在两个相等实数解:x1=%f x2=%f", x1, x2); } else { if (disc > 0) { x1 = p + q; x2 = p - q; printf("存在两个实数解:x1=%f x2=%f\n", x1, x2); } else //disc < 0 { printf("存在两个虚根:x1=%f+%fi x2=%f-%fi\n", p, q, p, q); } } printf("计算完成.\n"); return 0; }
- 项目计划配置书引脚:
//Copyright (c) 2023-2027 // All rights reserved. // // 文件名称:解方程 // 文件标识:见配置管理计划书 // 摘 要:简要描述本文件的内容 // // 当前版本:1.0 // 作 者:王自衡 // 完成日期:2023 年 11 月 4 日
- 下面让我们先写上需要引用的头文件:
#include<stdio.h>
#include<math.h>
#define MIN_VALUE 1e-6
- 接下来让我们来定义初始变量:
double a, b, c, x1, x2, disc, p, q;
printf("请输入一元二次方程的三个系数:a b c\n");
scanf("%lf %lf %lf", &a, &b, &c);
printf("一元二次方程的三个系数:a=%f b=%f c=%f\n", a, b, c)
if (fabs(a) <= MIN_VALUE) {
printf("不是二次方程");
if (fabs(b) <= MIN_VALUE)
{
if (fabs(c) <= MIN_VALUE)
{
//无穷解
printf("存在任意解\n");
}
else
{
//无解
printf("无解\n");
}
}
else
{
x2 = -c / b;
printf("存在一个解:%f\n", x2);
}
return 0;
}
- 求有实根的情况的解:
disc = b * b - 4 * a * c; p = -b / (2 * a); q = sqrt(disc) / (2 * a); if (fabs(disc) <= MIN_VALUE) { x1 = x2 = p; printf("存在两个相等实数解:x1=%f x2=%f", x1, x2); } else { if (disc > 0) { x1 = p + q; x2 = p - q; printf("存在两个实数解:x1=%f x2=%f\n", x1, x2); }
- 求b^2-4ac<0存在虚根的情况:
else //disc < 0 { printf("存在两个虚根:x1=%f+%fi x2=%f-%fi\n", p, q, p, q); }
运行结果:
-