当前位置:   article > 正文

(c语言)求一元二次方程的根_求一元二次方程根的c语言程序

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

题目描述

本题目要求一元二次方程ax^2+bx+c=0的根,结果保留2位小数。

输入

输入在一行中给出3个浮点系数a、b、c,中间用空格分开。

输出

根据系数情况,输出不同结果:

1)如果方程有两个不相等的实数根,则每行输出一个根,先大后小;

2)如果方程有两个不相等复数根,则每行按照格式“实部+虚部i”输出一个根,先输出虚部为正的,后输出虚部为负的;

3)如果方程只有一个根,则直接输出此根;

4)需要考虑系数为0的情况,如果系数都为0,则输出"Zero Equation";

5)如果a和b为0,c不为0,则输出"Not An Equation"。

输入样例1 

2.1 8.9 3.5

输出样例1

-0.44
-3.80


思考:

边界条件探索罢了,

1.考虑一次函数

  1. else if(a==0&&b!=0&&c!=0)
  2. printf("%.2f",-c/b);

提示

注意:存在a为0,b和c不为0的情况

2.考虑负零非法

real = -b / (2 * a) + For0mini;

Ac代码如下:

  1. #include<stdio.h>
  2. #include<math.h>
  3. int main() {
  4. double a, b, c, Delta;
  5. double x1, x2;
  6. double real, imaginary;
  7. double For0mini=0.00000001;
  8. scanf("%lf %lf %lf", &a, &b, &c);
  9. Delta = b * b - 4 * a * c;
  10. if(a==0&&b==0&&c==0)
  11. printf("Zero Equation");
  12. else if(a==0&&b==0&&c!=0)
  13. printf("Not An Equation");
  14. else if(a==0&&b!=0&&c!=0)
  15. printf("%.2f",-c/b);
  16. else {
  17. if (Delta >= 0) {
  18. if (Delta == 0) {
  19. x1 = (-b )/ (2 * a);
  20. printf("%.2f\n", x1);
  21. } else {
  22. x1 = (-b + sqrt(Delta)) / (2 * a);
  23. x2 = (-b - sqrt(Delta)) / (2 * a);
  24. printf("%.2f\n%.2f", x1, x2);
  25. }
  26. } else {
  27. real = -b / (2 * a) + For0mini;
  28. imaginary = sqrt(-Delta) / (2 * a);
  29. printf("%.2f+%.2fi\n%.2f-%.2fi", real, imaginary, real, imaginary);
  30. }
  31. }
  32. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/562892
推荐阅读
相关标签
  

闽ICP备14008679号