⑴ 怎樣用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;
}
⑵ 用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語言設計應用程序,求二次方程
讀取2次方程的ax^2+bx+c=d的a,b,c,d四個變數,用正常的2次方程解返回結果就行了,判斷對a=0和方程無解做一下特殊處理就完了。
⑷ C語言求二次方程的解
結果好像沒問題啊,你需要什麼的結果啊?是否printf的精度設置有問題啊。
另外最好增加disc是否大於0的判斷,避免負數開方。
⑸ c語言求二次方程解問題
printf("q=%f\n",&q);
這個不用加&.
q=(-b-q)/(2,0*a);
這是個逗號, 不是小數點.
printf("%f\n%f\n",&c,&q);
同上.
⑹ 怎樣用C語言編一個解一元二次方程的程序
這個只能計算已經化簡成aX^2+bX+c=0的一元二次方程
intfun(doublea,doubleb,doublec,double*x1,double*x2)//由於方程既可能無解也可能有兩個解,所以不能直接返回X的值
{
doublep=b*b-4*a*c;//計算Δ
if(p<0)
{
return0;//方程無解,返回0
}
p=√p//求Δ的平方根
*x1=……//用求根公式計算X1
*x2=……//用求根公式計算X2
return1;//方程有解,返回1
}
就這些了,求根公式和求平方根函數我忘了,你自己查一下。頭文件要加一個<math.h>。
⑺ c語言解一元二次方程
多出一句「請正確輸入,謝謝合作!」與「是否正確?(是y\否n)」的原因:
注意一下scanf,scanf並不是像通常所誤解的,認為是直接讀取用戶的當前輸入為輸入值。
而是讀取當前鍵盤緩沖區中的數據為本次輸入值。
所以如果當前的鍵盤緩沖區內仍有數據,那麼就不會接受當前的用戶輸入值。
在這個程序中,
由於鍵盤緩沖區內仍有用戶上次輸入數據時所殘留的回車符(也就是輸入a,b,c時最後敲的回車),
所以scanf("%c",&z); 這一句就將鍵盤緩沖區中的回車讀入,作為z值了。
所以判斷失敗,多出一句「請正確輸入,謝謝合作!」與「是否正確?(是y\否n)」。
改正辦法:
在每句scanf前,加上強制清空鍵盤緩沖區的處理fflush(stdin);,以保證接收的數據的正確性。
這也是一個好的編程習慣。
改過以後的程序:
#include "stdio.h"
#include "math.h"
void main()
{
printf("求方程ax^2+bx+c=0的根:\n");
L: printf("請分別輸入a,b,c的值。\n");
double a,b,c,x1,x2,x,y;
char z;
printf("a=");
fflush(stdin); //強制清空鍵盤緩沖區
scanf("%lf",&a);
printf("b=");
fflush(stdin); //強制清空鍵盤緩沖區
scanf("%lf",&b);
printf("c=");
fflush(stdin); //強制清空鍵盤緩沖區
scanf("%lf",&c);
printf("你所輸入的方程為%lfx^2+%lfx+%lf=0。\n",a,b,c);
M: printf("是否正確?(是y\否n)\n");
fflush(stdin); //強制清空鍵盤緩沖區
scanf("%c",&z);
if (z=='n')
goto L;
else if (z=='y')
{
if ((b*b-4*a*c)>0)
x1=(-b+sqrt(b*b-4*a*c))/(2*a),
x2=(-b-sqrt(b*b-4*a*c))/(2*a),
printf("有兩個不同的實根:\nx1=%lf\nx2=%lf\n",x1,x2),
printf("\n");
if ((b*b-4*a*c)==0)
x1=-b/(2*a),
printf("有兩個相同的實根:\nx1=x2=%lf\n",x1),
printf("\n");
if ((b*b-4*a*c)<0)
x=-b/(2*a),
y=sqrt(4*a*c-b*b)/(2*a),
printf("有兩表個不同的曾根:\nx1=%lf+%lfi\nx2=%lf-%lfi\n",x,y,x,y),
printf("\n");
goto L ;
}
else printf("請正確輸入,謝謝合作!\n");
goto M;
}
⑻ 用C語言編寫程序實現一元二次方程的解
#include <stdio.h>
#include <math.h>
void main ()
{
double sqrt(double x);
int a,b,c;
double x1,x2,x,e,d,g,f;
scanf("%d %d %d",&a,&b,&c);
d=b*b-4*a*c;
if (a==0)
{ if (b!=0)
{x=-(double)c/(double)b;
if (x==0)
{x=-x;
printf("x=%.6lf\n",x);}
else
printf("x=%.6lf\n",x);
}
else
printf("Input error!\n");}
else if (d<0)
{d=-d;
e=sqrt(d);
g=-(double)b/(2*(double)a);
f=e/(2*a);
if (g!=0)
printf("x1=%.6lf+%.6lfi\nx2=%.6lf-%.6lfi\n",g,f,g,f);
else
printf("x1=%.6lfi\nx2=-%.6lfi\n",f,f);}
else if (d==0)
{ x1=x2=-b/(2*a);
printf("x1=x2=%.6lf\n",x1);}
else
{ e=sqrt(d);
x1=(-b+e)/(2*a);
x2=(-b-e)/(2*a);
printf("x1=%.6lf\nx2=%.6lf\n",x1,x2);}
}
這個可以,但也許不夠簡便
⑼ 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語言求二次方程的解
可以啊。。