解一元二次方程

解一元二次方程可以用求根公式

解一元二次方程_第1张图片

  • 完整代码
    //Copyright (c) 2023-2027
    // All rights reserved.
    //
    // 文件名称:解方程
    // 文件标识:见配置管理计划书
    // 摘 要:简要描述本文件的内容
    //
    // 当前版本:1.0
    // 作 者:王自衡
    // 完成日期:2023 年 11 月 4 日
    
    #include
    #include
    #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
#include
#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);
    		}
    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
  • 求b^2-4ac<0存在虚根的情况:
    	else //disc < 0
    		{
    			printf("存在两个虚根:x1=%f+%fi x2=%f-%fi\n", p, q, p, q);
    		}

    运行结果:解一元二次方程_第2张图片

  • 解一元二次方程_第3张图片

你可能感兴趣的:(算法)