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

 更新时间:2022年11月07日 16:17:49   作者:雨落星河:Brack  
这篇文章主要介绍了用C语言求解一元二次方程的简单实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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语言数据结构深入探索顺序表

    C语言数据结构深入探索顺序表

    顺序表,全名顺序存储结构,是线性表的一种,线性表用于存储逻辑关系为“一对一”的数据,顺序表自然也不例外,不仅如此,顺序表对数据的物理存储结构也有要求,跟随下文来具体了解吧
    2022-03-03
  • 一篇文章带你了解C++多态的实现原理

    一篇文章带你了解C++多态的实现原理

    这篇文章主要介绍了C++多态的实现机制理解的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下,希望能给你带来帮助
    2021-08-08
  • C语言求矩阵主对角线元素及副对角线元素之和

    C语言求矩阵主对角线元素及副对角线元素之和

    这篇文章主要介绍了C语言求矩阵主对角线元素及副对角线元素之和实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • C++之拼接长字符串问题

    C++之拼接长字符串问题

    这篇文章主要介绍了C++之拼接长字符串问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • vscode+qt5+cmake编译调试过程解析

    vscode+qt5+cmake编译调试过程解析

    这篇文章主要介绍了vscode+qt5+cmake编译调试过程解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • 关于C语言文件操作方法

    关于C语言文件操作方法

    这篇文章主要介绍了关于C语言文件操作方法的相关资料,需要的朋友可以参考下
    2018-03-03
  • C语言实现停车管理系统

    C语言实现停车管理系统

    这篇文章主要为大家详细介绍了C语言实现停车管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • C++深入讲解类与封装的概念与使用

    C++深入讲解类与封装的概念与使用

    我们都知道C++有三大特性:封装、继承、多态,现在我们来总结一下封装的相关知识与类的概念,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-04-04
  • C++11新特性之auto的使用

    C++11新特性之auto的使用

    熟悉脚本语言的人都知道,很多脚本语言都引入了“类型自动推断”技术:比如Python,可以直接声明变量,在运行时进行类型检查。随着C++11标准的发布,C++语言也引入了类型自动推断的功能。这篇文章主要介绍了C++11新特性之auto的使用,有需要的朋友们可以参考借鉴。
    2016-12-12
  • C++ 动态创建按钮及 按钮的消息响应

    C++ 动态创建按钮及 按钮的消息响应

    这篇文章主要介绍了C++ 动态创建按钮及 按钮的消息响应的相关资料,需要的朋友可以参考下
    2015-06-06

最新评论