【Linux C编程】第二十三章 如何编写C程序来找到二次方程的根?

举报
Yuchuan 发表于 2021/06/23 13:49:18 2021/06/23
【摘要】 计算二次方程的根是我们在童年时期学到的东西。然而,二次方程的复杂性随着时间的推移而增加。处理这个问题的方法也得到了发展。在本文中,我们将研究一种编写 C 程序以求二次方程根的方法。

计算二次方程的根是我们在童年时期学到的东西。然而,二次方程的复杂性随着时间的推移而增加。处理这个问题的方法也得到了发展。在本文中,我们将研究一种编写 C 程序以求二次方程根的方法。

以下是本文要介绍的要点:

  1. What is a quadratic equation?
  2. Types of roots
  3. Understanding the Algorithm
  4. C program to find the roots of a Quadratic Equation

让我们开始。

什么是二次方程?

在深入探讨本文的编码部分之前,让我们先了解一下什么是二次方程?本节将使您对二次方程有很好的理解,这将有助于理解算法。所以,让我们回到解决方案。2 次方程称为二次方程。如果您不熟悉术语“度”,它是一个方程的阶,其值等于方程中存在的最大指数。

Degree Equation
1 Linear
2 Quadratic
3 Cubic

标准格式

让我们看看二次方程的标准形式是什么,这将有助于您快速识别它们。

ax + bx + c = 0是二次方程的标准形式,其中变量 a、b、c 的值是已知的。x 的值未知且 a 不等于0。

当您在图形上绘制二次方程时,您将得到一条曲线(抛物线)。这个方程切轴的点是它的。通常,二次方程有 2 个根。让我们讨论二次方程根的细节。 

根的类型

有几种不同的方法可以找到给定二次方程的根。例如,对给定的二次方程进行运算,使用完整的平方公式,最后一种方法涉及使用二次公式求根。我将坚持最后一种方法,因为与其他方法相比,它的缺点更少。

让我们考虑一下我们的二次方程是标准形式ax + bx + c = 0,那么我们可以使用的公式是 –

二次方程 - Edureka

现在,让我们谈谈根。基本上,分子中平方根 (b – 4ac) 内的项也称为判别式。它可以告诉您更多关于二次方程根的性质的信息。我们来看一下

  1. 如果判别式的值为正,则意味着我们有 2 个本质上是实数的根。
  2. 如果它的值为负,则您有一对本质上是复数的根(例如- 5i, 8i)。
  3. 如果它是 0,你会得到 2 个具有相等价值和实数的根。

现在您对二次方程及其根有了深入的了解,我们很高兴从算法开始,当您将在实际问题中学到的知识付诸实践时,感觉真的很棒。

理解算法

让我们一步一步地了解如何编写一个程序来求二次方程的根。

    1. 首先,我们将询问用户 a、b 和 c 的值以形成二次方程。
    2. 一旦你有了这些值,你需要检查输入的 a 的值是否不是 0。如果它是 0,我们的 x 2项将是 0,我们的方程将不再是二次方程。
    3. 现在,您有一个有效的二次方程,因此您可以计算其判别值。
    4. 得到判别值后,可以检查上面讨论的3个条件,以了解根的性质。
    5. 知道了性质之后,就可以算出它的根了。

现在让我们研究一下 C 程序来找出二次方程的根。

求二次方程根的C程序

#include<stdio.h> 
#include<math.h> 
#include<conio.h>
#include<stdlib.h> 
 
/*Function to know the nature of roots and calculate the roots of given quadratic equation*/
void RootsofQuadratic(int a, int b, int c) 
{ 
     
    if (a == 0)  /*Checking for value of a*/
    { 
        printf("The value of a cannot be 0"); 
        return; 
    } 
   
    int d = b*b - 4*a*c; 
    double SquarerootDescriminant = sqrt(abs(d)); 
   
    if (d > 0) 
    { 
        printf("The Roots are Real in Nature n"); 
        printf("%fn%f",(double)(-b + SquarerootDescriminant)/(2*a) 
            , (double)(-b - SquarerootDescriminant)/(2*a)); 
    } 
    else if (d == 0) 
    { 
        printf("The roots are equal and Real in Nature n"); 
        printf("%f",-(double)b / (2*a)); 
    } 
    else // d < 0 
    { 
        printf("The Roots are Complex in Nature n"); 
        printf("%f + i%fn%f - i%f", -(double)b / (2*a),SquarerootDescriminant 
            ,-(double)b / (2*a), SquarerootDescriminant); 
    } 
}  
int main() 
{ 
    int a;
    int b;
    int c;
   printf("For a quadratic equation of form ax2 + bx + c = 0 enter values of a, b, cn");
   scanf("%d%d%d", &a, &b, &c);  /*Asking for input*/
    RootsofQuadratic(a, b, c); 
    return 0; 
}

输出:

c - Edureka 中的输出二次方程

我们收到了输入值的 2 个复根。下次如果你有一个复杂的二次方程要解,这个程序肯定会为你节省一些时间。

这就是本文的全部内容。我希望你已经理解了找到二次方程根的概念和 C 程序。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。