用C语言求解一元二次方程的简单实现

Malinda ·
更新时间:2024-11-13
· 559 次阅读

目录

C语言 求解一元二次方程

求一元二次方程的解,考虑所有情况

1、a = 0

2、a != 0

C语言 求解一元二次方程

在用C语言求解一元二次方程的时候,首先,最重要的肯定是要引入"math.h"这个头文件,其次要会运用相关的数学库函数,如“sqrt”,“delta”等。

让我们一起在代码中寻找问题吧。

#include <stdio.h> #include <math.h> int main (void) {     int a = 1,b = 2,c = 1;     float x1 , x2 , delta ;     delta = b*b - 4*a*c ;     if ( delta > 0 )     {         x1 = (-b-sqrt(delta)) / (2*a);         x2 = (-b+sqrt(delta)) / (2*a);         printf ("该方程有两解,x1 = %f\n,x2 = %f\n",x1,x2);     }     else if (delta == 0)     {         x1 = (-b) / (2*a);         x2 = x1;         printf ("该方程有唯一解,x1 = x2 = %f\n",x1 = x2);     }     else if (delta < 0)     {         printf ("该方程无解\n");     }     return 0;  } 

这是之前我发的第一个博客代码,现在我看到“数一数二的白落”的评价后又优化了一些,代码如下:

#include <stdio.h> #include <math.h> int main (void) {     int a, b, c;     printf("请输入一元二次方程的三个系数:\n");     scanf("%d %d %d",&a,&b,&c);     float x1 , x2 , delta ;     delta = b*b - 4*a*c ;     if ( delta > 0 )     {         x1 = (-b-sqrt(delta)) / (2*a);         x2 = (-b+sqrt(delta)) / (2*a);         printf ("该方程有两解,x1 = %f\n,x2 = %f\n",x1,x2);     }     else if (delta == 0)     {         x1 = (-b) / (2*a);         x2 = x1;         printf ("该方程有唯一解,x1 = x2 = %f\n",x1 = x2);     }     else if (delta < 0)     {         printf ("该方程无解\n");     }     return 0;  }  求一元二次方程的解,考虑所有情况

假设:ax²+bx+c=0

要求输入a,b,c的值,判断并求出方程的解。

有以下几种情况:

1、a = 0

(1)b = 0

c = 0时,x可以是任意数;

c != 0时,方程不成立;

(2)b != 0

方程为一元一次方程,x = - c b \frac{c}{b} bc​

2、a != 0

(1)△ =b^2-4ac >0,方程有两个不等的实根;

(2)△ =b^2-4ac =0,方程有两个相等的实根;

(3)△ =b^2-4ac <0,方程有两个共轭复根;

#include <stdio.h> //编译预处理 #include <math.h> //编译预处理 int main() { double a,b,c,x1,x2,Delta,realpart,mipart; //声明函数变量 printf("a*x^2 + bx +c = 0,请输入a,b,c的值:"); scanf("%lf,%lf,%lf",&a,&b,&c); //获取输入的a,b,c三个系数的值 //printf("%.2f,%.2f,%.2f",a,b,c); if (a == 0 ) //判断a是否为0 { if(b != 0) { x1 = -c / b; printf("方程是一元一次方程,x1=%.2f\n",x1); } else { if (c ==0) printf("x可以是任意值。\n"); else printf("方程不成立。\n"); } } else { Delta = pow(b,2) - 4*a*c; //判断delta的值 if (Delta>0) { x1 = (-b+sqrt(Delta)) / (2*a); x2 = (-b-sqrt(Delta)) / (2*a); printf("方程的两个根为x1 = %.2f,x2 = %.2f\n",x1,x2); } else { if (Delta == 0) { x1 = - b/(2*a); x2 = - b/(2*a); printf("方程有两个相等的根:\nx1=%.2f\nx2=%.2f\n",x1,x2); } else { realpart = - b/(2*a); //实部 mipart = sqrt(-Delta) / (2*a); printf("方程有两个共轭复根:\n"); printf("x1 = %.2f+%.5fi\n",realpart,mipart); //人为地加了i,以表示虚部 printf("x2 = %.2f-%.5fi\n",realpart,mipart); } } } return 0; } //每个if和else都用花括号{}包起来,这样程序识别时候不会认为else没有匹配的if。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持软件开发网。



一元二次方程 C语言

需要 登录 后方可回复, 如果你还没有账号请 注册新账号