您現在的位置是:網站首頁>C++用C語言求解一元二次方程的簡單實現

用C語言求解一元二次方程的簡單實現

宸宸2024-05-25C++81人已圍觀

給網友朋友們帶來一篇相關的編程文章,網友鍾俊哲根據主題投稿了本篇教程內容,涉及到C語言一元二次方程、求解一元二次方程、一元二次方程、C語言求解一元二次方程相關內容,已被175網友關注,如果對知識點想更進一步了解可以在下方電子資料中獲取。

C語言求解一元二次方程

C語言 求解一元二次方程

在用C語言求解一元二次方程的時候,首先,最重要的肯定是要引入"math.h"這個頭文件,其次要會運用相關的數學庫函數,如“sqrt”,“delta”等。

讓我們一起在代碼中尋找問題吧。

#include 
#include 
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 
#include 
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    //編譯預処理
#include     //編譯預処理
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。

以上爲個人經騐,希望能給大家一個蓡考,也希望大家多多支持碼辳之家。

我的名片

網名:星辰

職業:程式師

現居:河北省-衡水市

Email:[email protected]