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

一元二次方程解法c語言

發布時間: 2023-06-14 10:32:38

A. c語言解一元二次方程

計算邏輯顯得有點亂,但沒看出有什麼大問題;
結束前的這一部分是重復運算了。
else if (b != 0 && c != 0) {
x1 = (-c) / b;
printf("%.2lf", x1);
}
else if (b != 0 && c == 0) {
x1 = 0;
printf("%.2lf", x1);
}
演算法可以簡化為:
else if (b != 0) {
x1 = (-c) / b;
printf("%.2lf", x1);
}

B. 用C語言求解一元二次方程的解怎麼寫

您好!很高興為您解答。

原代碼中的scanf和printf中的%要放在d和lf的前面才對,改正後運算無誤~

#include <stdio.h>
#include <math.h>
void main ()
{
double x1;//x1,x2分別為方程的2個解
double x2;
double melt;
int a;
int b;//初始化ABC的三個變數
int c;
printf("請輸入a b c三個數的值:");
scanf("%d %d %d",&a, &b ,&c);//輸入ABC的時候需要空格
melt = b*b - 4*a*c;//初始化melt的值
if (melt>0)
{ x1=(-b + sqrt(melt))/(2*a);
x2=(-b - sqrt(melt))/(2*a);
printf ("2個解,x1 = %lf,x2 = %lf\n",x1,x2);
}

else if (melt==0)
{
x1 = (-b )/(2*a);
x2 = x1;
printf("1個解,x1 = %lf,x2 = lf%\n",x1,x2);
}
else
{
printf("無解\n");
}
}

望採納~如您還有不解,歡迎追問~

C. c語言求解一元二次方程

intmain()
{
inta,b,c,d;
floatx1,x2;
scanf("%d%d%d",&a,&b,&c);
d=b*b-4*a*c;
if(a==0)
{
if(b==0)
{
printf("Inputerror! ");
}
else
printf("x=%.6f",-c/b);
}
else
{
if(d<0)
printf("Inputerror! ");
elseif(d==0)
printf("x1=x2=%.6f",-b/(2*a));
else
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%.6f x2=%.6f ",x1,x2);
}
}
return0;
}

D. 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("方程的解為任意實數");
}
}

E. C語言一元二次方程求解

#include <stdio.h>
#include <math.h>
void main()
{
float a,b,c,x,x1,x2;//應該為浮點數。
printf("請輸入:");
scanf("%f%f%f",&a,&b,&c);//1,輸入一起改為浮點數個數輸入。2,輸入最好別用非空格符',' 不然將限制你輸入格式。
a*x*x+b*x+c==0;//不應該賦值運算符。
if(a==0)
printf("此方程不是二次方程\n");//沒有格式輸出符就不應該有參數。
else if(b*b-4*a*c==0)
printf("此方程有兩相等實根,根為:%f.\n",x=b/(2*a));//有參數應該有格式輸出符。
else if(b*b-4*a*c>0)
printf("此方程有兩不相等實根,根為:%f,%f.\n",x1=(-b+sqrt(b*b-4*a*c))/(2*a),x2=(-b-sqrt(b*b-4*a*c))/(2*a));//同上
else if(b*b-4*a*c<0)
printf("此方程有兩共軛復根,實部:%f,虛部:%f.\n",-b/(2*a),sqrt(-(b*b-4*a*c))/(2*a));//1,同上。2,參數應為表達式。
}

如果還有其他的錯,那就是演算法的錯了。

F. c語言 解一元二次方程 新手很茫然

呵呵,寫得不錯。

if(a>0||a<0) -> if (a!=0) 這個確實比較好,要是怕出錯,有人建議寫成if(0!=a),為了避免輸入錯誤。比如少輸一個!等等。
浮點數的判斷一般會弄一個范圍,以避免直接的等號,因為計算有誤差。但是實際上情況非常復雜。

如果能夠確定輸入的范圍,那麼這么優化判斷自然沒有問題。比如,a、b、c都是整數量級。
如果系數都是0.001這種量級,優化後的就是總顯示有一個實數根或者無解,顯然是不合適的。

因為實際上數學上的數和計算機所能表示的數范圍相差太大,所以我覺得還是可以,二重根這種情況,列印兩遍不算錯誤,不必判斷是否相等。如果一定要判斷,最好用整數或者分數。

此外,程序還可以考慮,使用分數之類進行計算,輸出中帶有根號。比如結果輸出4*sqrt(2)這樣更實用一些。

G. 怎樣用C語言編一個解一元二次方程的程序(可以看步驟)!

#include <stdio.h>
#include <math.h>
int main(void)
{
int a, b, c; //定義一元二次方程的三個數值;
printf("請依次輸入一元二次方程的三個參數a b c,中間以空格隔開\n");
scanf("%d %d %d", &a, &b, &c); //依次輸入一元二次方程的三個參數
double delta = b*b - 4*a*c; //定義delta的值為b*b - 4*a*c
double x1 = (-b + sqrt(delta))/(2 * a);
double x2 = (-b - sqrt(delta))/(2 * a);

if (delta>0) //delta大於0時,方程有兩個解
{
printf("一元二次方程有兩個解\n");
printf("一元二次方程的第一個解,x1 = %f\n",x1);
printf("一元二次方程的第二個解,x2 = %f\n",x2);
}
else if (delta ==0) //delta等於0,方程有兩個相同的解
{
printf("一元二次方程有兩個相同的解\n");
printf("一元二次方程的解為x1 = x2 =%f\n",x1);
}
else //delta小於0時,方程沒有解
{
printf("一元二次方程沒有解\n");
}

return 0;
}

H. 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

為迭代序列。