當前位置:首頁 » 編程語言 » 求二次方程的實數和復數解c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

求二次方程的實數和復數解c語言

發布時間: 2023-06-04 08:28:10

c語言,求一元二次方程的解

對於如下的一元二次方程:

ax*x+bx+c=0

設計C語言程序,輸入一元二次方程的三個系數a、b、c,求解出該方程的兩個根,並且允許用戶在程序中多次輸入不同的系數,以求解不同的一元二次方程的解。

編程思路分析:

對於該方程,令delta=b^2-4*a*c,從數學的角度來講,我們需要根據delta的值來判斷該方程的根情況:

當delta>=0時,其兩個根為實數解,分別為(-b+sqrt(delta))/(2*a)和(-b-sqrt(delta))/(2*a);

當delta<0時,其兩個根為復數解,實部皆為-b/(2*a),虛部分別為sqrt(-delta)/(2*a)和-sqrt(-delta)/(2*a)。

其中,sqrt(delta)代表對delta作開根號運算。

在代碼設計中,可定義一個結構體Complex存儲該方程的根,在該結構體中包括實部和虛部兩個變
在程序中,定義兩個Complex類型的根x1和x2,當delta>=0時,兩個根的虛部為0,否則,分別求解兩個根的虛部值。
具體編程如下:

#include"stdio.h"
#include"math.h"
/*求一元二次方程ax*x+bx+c=0的解*/
main()
{floata,b,c,x1,x2,d;
printf("請輸入a:");
scanf("%f",&a);
printf("請輸入b:");
scanf("%f",&b);
printf("請輸入c:");
scanf("%f",&c);
d=b*b-4*a*c;if(d<0)
printf("方程沒有實數解。 ");
if(d==0){x1=(-b)/(2*a);
printf("x1=%f ",x1);}
if(d>0){x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f ",x1,x2);}}
請輸入a:12
請輸入b:34
請輸入c:4
x1=-0.122985,x2=-2.710348
Pressanykeytocontinue

為迭代序列。

㈡ c語言求解一元二次方程

1、本題要先判斷a,如果a=0,則不是一元二次方程。
2、首先要判斷d是否小於0,則只能有虛數解,d小於0時,就不能去開平方,否則會出錯。
3、按照以上思路重新修改你的程序。

㈢ 用C語言求二次方程的解

修改如下:

//---------------------------------------------------------------------------

# include<stdio.h>
# include<math.h>
int main(){
double a,b,c;
printf("Please input a,b,c:\n");
scanf("%lf%lf%lf",&a,&b,&c); /*注意這里*/
if(b*b-4*a*c<0)
printf("NO result!\n");
else
printf("x1=%lf\nx2=%lf\n",(sqrt(b*b-4*a*c)-b)/(2*a),(-b-sqrt(b*b-4*a*c))/(2*a)); /*注意這里*/
return 0;
}
//---------------------------------------------------------------------------

㈣ 用c語言求解復數域一元二次方程

#include<stdio.h>
#include<math.h>
int main(){
int a,b,c;
int t;
//t就是b^2-4ac判斷它和0的大小決定是解否是復數
printf("推出請按Ctrl+c,輸入非數字後果自付.\n");
//Ctrl+c是 windows下的文件結束符.在命令行下不是拷貝快捷鍵
while(1){
a=b=c=t=0;
//初始化
scanf("%d %d %d",&a,&b,&c);
//輸入數據
if(a==0){printf("input error!\n");continue;}
//如果輸入二次項系數為零顯示告訴用戶
t=b*b-4*a*c;
if (t<0){
printf("x1=%.6lf+%.6lfi\n",-b/2.0/a,sqrt(-t)/2/a);
printf("x1=%.6lf-%.6lfi\n",-b/2.0/a,sqrt(-t)/2/a);

}else {
printf("x1=%.6lf+0i\n",-b/2.0/a+sqrt(t)/2/a);
printf("x1=%.6lf+0i\n",-b/2.0/a-sqrt(t)/2/a);
}
}
return 0;}

㈤ 關於二次方程的C語言程序

這個問題很簡單
#include <stdio.h>
#include <math.h>
void main()
{
float a,b,c,d;
float x1,x2;
scanf("%f %f %f",&a,&b,&c);
d=b*b-4*a*c;
if(d<0)
{
printf("on!\n");
}
else
if(d==0)
{
x1=(-b/(2*a));
printf("%f\n",x1);
}
else
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("X1=%f\nX2=%f\n",x1,x2);
}
}

㈥ C語言解一元二次方程(包含虛數解)

表示虛數一般不用j表示,而是用i表示。輸出的時候後面帶上i就可以了。

判別式變數d為負時,用sqrt(-d)

形如ax²+bx+c=0的方程的完整程序如下:

#include<stdio.h>
#include<math.h>
voidmain()
{
floata,b,c,dlt;
printf("請輸入a、b、c:");
scanf("%f%f%f",&a,&b,&c);
if(a)
{
dlt=b*b-a*c*4;
if(dlt>0)
printf("x1=%f x2=%f",(-b+sqrt(dlt))/(a*2),(-b-sqrt(dlt))/(a*2));
elseif(dlt<0)
printf("x1=%f+%fi x2=%f-%fi",-b/(a*2),abs(sqrt(-dlt)/(a*2)),-b/(a*2),abs(sqrt(-dlt)/(a*2)));
elseprintf("x=%f",-b/(a*2));
}
else
{
if(b)c?printf("x=%f",-c/b):printf("x=%f",abs(-c/b));
elsec?printf("方程無實數解"):printf("方程的解為任意實數");
}
}

㈦ 編寫求解一元二次方程的C語言程序(紅色部分有標注)

#include <stdio.h>
#include <math.h>
int main()
{
double a=1,b=0,c=0,x1,x2,delta;
printf("Input a,b,c: ");
scanf("%lf%lf%lf",&a,&b,&c);//(這里為紅色部分)

if(a==0.0 && b==0.0 && c==0)
{
printf("系數a,b,c不能構成方程! ");
return 0;
}
if(a==0)
{
x1=x2=-c/b;
printf("x1=x2=%.4f ",x1);
return 0;
}
delta =b*b - 4*a*c; //此處填寫delta的計算表達式(這里為紅色部分)
if( delta >= 0)//此處填寫表達式 如果delta>=0
{
delta=sqrt(delta);
x1=(-b+delta)/(2*a);
x2=(-b-delta)/(2*a);
printf("x1=%.4f x2=%.4f ",x1,x2);
}
else
{
delta = (0-delta);//delta反號;(這里為紅色部分)
delta=sqrt(delta);//delta開方;(這里為紅色部分)
x1=-b/(2*a);//實部
x2=delta/(2*a);//虛部
printf("x1=%.4f+%.4fi x2=%.4f-%.4fi ",x1,x2,x1,x2);
}
getchar();
return 0;
}

結果如下:

方程2