⑴ 用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語言編寫一元2次方程。
程序想法沒錯,但設計的時候有點失誤。
void
main()
{
float
a=0,b=0,c=0,d=0,x1=0,x2=0,e=0;/*定義變數*/
printf("axe2+bx+c=0,(a,b,c):\n");/*提示輸入3個數*/
scanf("%f,%f,%f",&a,&b,&c);/*輸入的時候用float型
*/
e=sqrt(d);/*根號d
*/
x1=(-b+e)/(2*a);/*計算方程,公式有點不點,邏輯*/
x2=(-b-e)/(2*a);/*計算方程*/
printf("\n
positive:\n
x1=%f,\n
negative:\nx2=%f",x1,x2);/*輸出x1
x2,輸出的時候也要用float型*/
}
else
printf("equation");/*方程無解*/
getch();
}
//經修改,可以正常運行,
還有建議下,你就在定義變數的時候不要一大串一起定義類型,
有時候變數的類型是不無法隱型轉換的,就會出錯。
就像程序裡面的,開根號又不一定都開出個整數,大多都是帶小數的,就應該定義成float型,
最後的解也會直接化成帶小數的,要是你用long(長整型,也是整型的一種),
那小數點後面就將被程序自動省略,那問題可就大了,呵呵,。
還在做為printf輸出的時候,要給點提示,不然人家也不知道,這a,b,c是幹嘛用的。
⑶ 怎樣用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,x1,x2,d=0,e=0;
scanf("%lf%lf%lf",&a,&b,&c);
if(b*b-4*a*c<=0)
{
d=-b/2/a;
e=sqrt(fabs(b*b-4*a*c))/2/a;
printf("x1=%.3lf+%.3lfi x2=%.3lf-%.3lfi
",d,e,d,e);
}
else
{
x1=(-b+sqrt(b*b-4*a*c))/2/a,x2=(-b-sqrt(b*b-4*a*c))/(2*a);
printf("x1=%.3lf x2=%.3lf
",x1,x2);
}
getch();
return 0;
}
你的程序沒有問題,是你的C語言工具有問題,建議你重裝一編譯軟體。
⑸ 怎樣用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語言 算一元二次方程
//只一處有錯,還有一個注意輸入格式.
#include<stdio.h>
#include<math.h>
int main()
{
double p,q,x1,x2,disc,a,b,c;
scanf("%lf,%lf,%lf",&a,&b,&c);//特別注意:此處要求輸入時a,b,c(三個數)之間用逗號隔開,而不是空格!
disc=b*b-4*a*c;
if(disc>0)
{
p=-b/(2.0*a);
q=(sqrt(disc))/(2.0*a);
x1=p+q;
x2=p-q;
printf("x1=%lf\tx2=%lf",x1,x2);
}
else if(disc=0)//只有此處有錯,關系表達式的等於符號是"==",此句改為else if(disc==0);即可
{
p=-b/(2.0*a);
x1=p;
printf("x1=x2=%lf",x1);
}
else if(disc<0)
{
disc=-disc;
p=-b/(2.0*a);
q=(sqrt(disc))/(2.0*a);
printf("x1=%lf+%lfi\n",p,q);
printf("x2=%lf-%lfi\n",p,q);
}
return 0;
}
⑺ 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>
main()
{int a,b,c,x1,x2,M,n;
printf("請輸入方程的三個系數:");
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);n=a*c;
M=b*b-4*n;
printf("%d\n",M);if (M>0)
{ x1=(-b+M)/(2*a);
x2=(-b-M)/(2*a);
printf("方程的兩個根是:\nx1=%d,x2=%d\n",x1,x2);
}
else if (M==0)
{ x1=-b/(2*a);
printf("方程具有兩個相等的實根:x1=x2=%d\n",x1);
}
else
printf("輸入錯誤,請重新輸入\n");
}